Domanda

Ho un file di libreria statico chiamato libunp.a, so che potrei usare gcc -lunp xx per il collegamento alla libreria.

ho potuto utilizzare #pragma comment(lib,"xxx.lib") a dire la Microsoft C / C ++ per includere la libreria; come potrei farlo sotto Linux / GCC?

È stato utile?

Soluzione

Semplice; non si può. GCC non ha tale equivalente. Specificare -l come parametro gcc, creare uno script del linker, chiamare ld, chiamare il 911 o qualsiasi altra cosa.

Non è che una tale pragma rende ancora senso. Le biblioteche devono essere specificati durante la fase di collegamento. Tali informazioni semplicemente non appartiene all'interno di un'unità di traduzione. Un'unità traduzione può essere preelaborazione, compilato e assemblato anche senza una fase di collegamento. La toolchain utilizzato da Visual Studio permette questo perché è cerebroleso e sempre effettua il collegamento.

Si potrebbe desiderare di risparmiare un po 'di battitura noioso e creare un makefile per il progetto: GNU Fare manuale

Altri suggerimenti

Non ci sembra essere alcuna menzione di eventuali pragma equivalenti nella pagina del manuale GCC il pragma .

Una ragione ho visto per GCC non sostenere il collegamento in codice sorgente è che a volte, corretto collegamento dipende su ordine dei collegamenti ; e questo richiederebbe di fare in modo che l'ordine di collegamento avviene in modo corretto, non importa l'ordine di compilazione. Se avete intenzione di andare a che molto lavoro, si può anche semplicemente passare gli argomenti linker sulla riga di comando (o meno), suppongo.

  

Le biblioteche dovrebbero essere specificati durante la fase di collegamento. Tali informazioni semplicemente   non appartiene all'interno di un'unità di traduzione. Un'unità traduzione può essere preelaborazione,   compilato e assemblati anche senza una fase di collegamento.

Semplicemente perché #pragma comment(lib,"xxx.lib") è nel file di origine non significa che il compilatore consuma. In realtà, va come un commento e viene successivamente utilizzato dal linker. Non molto diverso da * nix.

Utilizzare questo flag GCC per generare un errore per pragma sconosciuti. Sarà rapidamente vi dirà se il compilatore capisce.

-Werror=unknown-pragmas

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top