La liaison de sorte bibliothèque dans gcc
Je vais commencer par dire que je suis nouveau sur gcc et les makefiles. J'ai un .donc le fichier sur le bureau (~/Desktop) appelé lib.so
. Je veux lier mon programme (appelé myProgram). Ce que j'ai écrit dans mon makefile est:
g++ myProgram.o -L ~/Desktop -l lib -o myProgram
Quand je lance make
j'obtiens une erreur:
/usr/bin/ld: cannot find -llib
J'ai aussi essayé -l lib.so
et obtenu la même erreur.
Quelle est la façon correcte de lien?
Lorsque vous utilisez
Merci, cela a fonctionné. Vous devriez écrire cette réponse.
Je ne suis pas sûr de savoir comment faire trouver
C'est bon j'ai changé le nom du fichier à libBenjy.donc, et en lien avec Benjy et cela a fonctionné.
-l foo
, il semble pour libfoo.so
. Donc -l lib
est à la recherche d' liblib.so
.Merci, cela a fonctionné. Vous devriez écrire cette réponse.
Je ne suis pas sûr de savoir comment faire trouver
lib.so
, car il ne suit pas que la convention de nommage.C'est bon j'ai changé le nom du fichier à libBenjy.donc, et en lien avec Benjy et cela a fonctionné.
OriginalL'auteur Benjy Kessler | 2013-03-31
Vous devez vous connecter pour publier un commentaire.
Deux solutions:
Renommez le fichier
libsomething.so
, puis utilisez-l something
. L'éditeur de liens adapte automatiquement le nom aveclib
préfixe et.so
suffixe (ou.a
suffixe pour les bibliothèques statiques).Utiliser l'option
-l :lib.so
. Lorsque vous faites précéder le nom avec:
, l'éditeur de liens utilise le nom donné.Celles-ci sont expliquées dans le
ld
page de man.Le répertoire doit être dans votre variable d'environnement LD_LIBRARY_PATH.
Pour une raison que je n'ai pas une variable d'environnement LD_LIBRARY_PATH, mais je vais arrêter de vous harceler.
Vous avez seulement besoin de cette variable si vous voulez trouver les bibliothèques de la non-standard des lieux.
Vous pouvez ajouter un rpath à l'exécutable. De cette façon, lorsque exe est exécutée va le chercher dans cette voie (en plus de LD_LIBRARY_PATH). Vous pouvez ajouter un rpath de cette façon: gcc .... -Wl,-rpath=/chemin/vers/sharedlibrary/dossier
OriginalL'auteur Barmar