Pb compilation: /usr/bin/ld: cannot find -l.. [Fermé]

Signaler
-
Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
-
Bonjour, J'essaie de compiler avec une bibliothèque que j'ai installée, et qui s'appelle "libTableauNoir".
seulement voilà: lorsque j'utilise gcc voilà ce que cela me sort:


Mon-PC:~/.../lib_tableau_noir_sdl$ gcc -lTableauNoir essai.c -o essai
/usr/bin/ld: cannot find -lTableauNoir
collect2: ld a retourné 1 code d'état d'exécution


J'aimerais comprendre ce qui se passe, et si possible avoir une solution :S

merci d'avance

3 réponses

Bonjour a tous,

j'ai exactement le meme probleme, la meme erreur sauf qu'apres avoir suivis vos conseils ca ne fonctionne toujours pas.

Ma ligne de compil :

g++ -o test.exe main.o -L. -lfunc.so

(ma lib s'appelle libfunc.so)

J'ai teste le sudo ldconfig, ca n'a rien donne :(

En tous cas, merci d'avance !
425
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57836 internautes nous ont dit merci ce mois-ci

Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
4 920
regarder la man page de ld, l'éditeur de lien
Bon c'est bon j ai reussi a me depatouiller, cependant je suis face a un truc que je trouve etrange (je dois certainement faire quelque chose de mal mais bon).

Je m'expliquer :

J'ai un ensemble de librairies nommees ainsi : libsfml-audio.so.1.6, libsfml-graphics.so.1.6 etc ..

le seul moyen de compiler avec ces libs (le seul que j ai trouve du moins xD) a ete de les copiee dans le meme dossier en modifiant leurs noms pour me retrouver avec libsfml-audio.so, libsfml-graphics.so etc.

La du coup j ai pu compiler ainsi :

g++ main.o -I$chemin/include -L$chemin/lib -lsfml-audio -lsfml-graphics ...

du coup je me suis dis que tout allait bien et que je n'avais plus besoin des libs nommees avec le .1.6 a la fin ... je les delete et la, impossible d'executer mon programme, ca me dit que la lib est manquante !!

Du coup je ne comprend pas trop comment a fonctionne le linkage dans ce cas la ^^ !
Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
4 920
ce sont des libs dynamiques, elles sont chargées quand le programme est exécuté, et peuvent être utilisées par d'autres programmes, par opposition aux librairies statiques qui sont chargées dans le fichier exécutable, option -static de g++

voir là https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle , library étant traduit par bibliothèque
Oui oui ca je vois, ce que je ne comprend c est pourquoi je suis oblige d'utiliser une version de la meme lib pour compiler et une autre version au lancement xD
Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
4 920
parce que l'exécutable a besoin de connaitre les libraries, même si le code n'est pas inclus.
on peut voir les libs nécessaires avec ldd test.exe
Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
4 920
hello
préciser le répertoire où elle se trouve avec -L/chemin
Utilisateur anonyme
oui oui mais ça revient au même :/
Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
4 920
j'ai faux,
il faut écrire -lTableauNoiret il va chercher libTableauNoir.so
Utilisateur anonyme
It.... WORKS!

merci beaucoup =)
j'ai réussi à faire fonctionner le fichier de test que le prof nous a fourni avec la bibliothèque et il a parfaitement fonctionné

j'espère que ça va durer...
Encore merci en tout cas! =)
Messages postés
8
Date d'inscription
vendredi 11 mai 2012
Statut
Membre
Dernière intervention
23 avril 2015
1
Bonjour, J'essaie de compiler avec une bibliothèque que j'ai installée, et qui s'appelle "libTableauNoir".
seulement voilà: lorsque j'utilise gcc voilà ce que cela me sort:


Mon-PC:~/.../lib_tableau_noir_sdl$ gcc -lTableauNoir essai.c -o essai
/usr/bin/ld: cannot find -lTableauNoir
collect2: ld a retourné 1 code d'état d'exécution


J'aimerais comprendre ce qui se passe, et si possible avoir une solution :S

merci d'avance
Messages postés
18181
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 juillet 2020
4 920
il faut préciser avec l'option -L dans quel répertoire se trouve libTableauNoir si elle n'est pas dans /usr/lib
Messages postés
123
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
18 mars 2015
15
Salut

Il suffit de mettre à jour "ld.so.cache" avec la commande ldconfig.
Ensuite relance la compilation et normalement ça devrait fonctionner.
Je la lance avec sudo (autrement j'ai des problèmes de permissions, dites-moi si je me trompe: c'est bien sudo dans ce cas? :S je débute sous linux)

sudo ldconfig 


Aucune réponse du terminal :/

Merci quand même.
Messages postés
123
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
18 mars 2015
15
Oui en effet.C'est sudo puis la commande si tu es en mode simple utilisateur (non ROOT).