web-dev-qa-db-fra.com

Commentaire #pragma (lib, "xxx.lib") équivalent sous Linux?

J'ai un fichier de bibliothèque statique appelé libunp.a, je sais que je pourrais utiliser gcc -lunp xx pour créer un lien vers la bibliothèque.

Je pourrais utiliser #pragma comment(lib,"xxx.lib") pour dire au compilateur Microsoft C/C++ d'inclure la bibliothèque; comment pourrais-je le faire sous Linux/GCC?

55
Jichao

Il ne semble pas y avoir de mention de pragmas équivalents dans le page du manuel de GCC sur les pragmas .

Une des raisons pour lesquelles j'ai constaté que GCC ne supportait pas les liens dans le code source était que parfois, le lien correct dépend de l'ordre des liens ; et cela vous obligerait à vous assurer que l'ordre de liaison se passe correctement, peu importe l'ordre de compilation. Si vous comptez travailler autant, vous pouvez également passer les arguments de l'éditeur de liens sur la ligne de commande (ou autre), je suppose.

20
Mark Rushakoff

Les bibliothèques doivent être spécifiées lors de l'étape de liaison. Ces informations simplement n'appartient pas à une unité de traduction. Une unité de traduction peut être prétraitée, compilé et assemblé même sans étape de liaison.

Tout simplement parce que #pragma comment(lib,"xxx.lib") est dans le fichier source ne signifie pas que le compilateur le consomme. En fait, il entre dans un commentaire et est ensuite utilisé par l'éditeur de liens. Pas très différent de * nix.

19
Jeffrey Walton

Utilisez cet indicateur GCC pour générer une erreur pour les pragmas inconnus. Il vous dira rapidement si le compilateur le comprend.

-Werror=unknown-pragmas

0
J. Winarske