wake-up-neo.com

#pragma comment (lib, "xxx.lib") entspricht unter Linux?

Ich habe eine statische Bibliotheksdatei namens libunp.a. Ich weiß, ich könnte gcc -lunp xx verwenden, um eine Verknüpfung zur Bibliothek herzustellen.

Ich könnte #pragma comment(lib,"xxx.lib") verwenden, um den Microsoft C/C++ - Compiler anzuweisen, die Bibliothek einzuschließen. Wie kann ich das unter Linux/GCC machen?

55
Jichao

Auf der Seite des GCC-Handbuchs zu Pragmas scheint es keine entsprechenden Pragmas zu geben.

Ein Grund, warum GCC das Verknüpfen im Quellcode nicht unterstützt, war, dass das korrekte Verknüpfen manchmal von der Verknüpfungsreihenfolge abhängt ; und dazu müssten Sie sicherstellen, dass die Verknüpfungsreihenfolge unabhängig von der Kompilierungsreihenfolge korrekt ist. Wenn Sie so viel Arbeit erledigen wollen, können Sie die Linker-Argumente vermutlich auch einfach in der Befehlszeile (oder auf andere Weise) übergeben.

20
Mark Rushakoff

Bibliotheken sollten während des Verknüpfungsschrittes angegeben werden. Solche Informationen einfach gehört nicht in eine Übersetzungseinheit. Eine Übersetzungseinheit kann vorverarbeitet werden, kompiliert und auch ohne Verknüpfungsstufe zusammengebaut.

Nur weil #pragma comment(lib,"xxx.lib") in der Quelldatei enthalten ist, bedeutet dies nicht, dass der Compiler sie verwendet. Tatsächlich geht es als Kommentar ein und wird anschließend vom Linker verwendet. Nicht viel anders als * nix.

19
Jeffrey Walton

Verwenden Sie dieses GCC-Flag, um einen Fehler für unbekannte Pragmas zu generieren. Es wird Ihnen schnell sagen, ob der Compiler es versteht.

-Werror=unknown-pragmas

0
J. Winarske