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?
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.
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.
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