#pragma comment (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 gcc -lunp xx lien vers la bibliothèque.

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

Simple; tu ne peux pas. GCC n’a pas un tel équivalent. Spécifiez -l comme paramètre gcc, créez un script de l’éditeur de liens, appelez ld , appelez 911 ou autre.

Pas qu’un tel pragma ait même un sens. Les bibliothèques doivent être spécifiées lors de l’étape de liaison. Une telle information n’appartient simplement pas à une unité de traduction. Une unité de traduction peut être prétraitée, compilée et assemblée même sans étape de liaison. La chaîne d’outils utilisée par Visual Studio permet cela car elle est braindead et effectue toujours des liaisons.

Vous voudrez peut-être vous épargner de la saisie fastidieuse et créer un MakeFile pour votre projet: GNU Make Manual

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

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

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

L’une des raisons pour lesquelles GCC ne supportait pas la liaison dans le code source était que parfois, la liaison correcte dépend de l’ordre des liens ; et cela vous obligerait à vous assurer que l’ordre de liaison se produit correctement, peu importe l’ordre de compilation. Si vous allez à beaucoup de travail, vous pouvez aussi bien passer les arguments de l’éditeur de liens sur la ligne de commande (ou autre), je suppose.