Menu

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

- - Dernière réponse : dubcek
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
- 23 avril 2015 à 08:22
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

Afficher la suite 

3 réponses

Meilleure réponse
425
Merci
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 !

Dire « Merci » 425

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

CCM 54371 internautes nous ont dit merci ce mois-ci

dubcek
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
4380 -
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 ^^ !
dubcek
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
4380 -
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à http://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
dubcek
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
4380 -
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
123
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
18 mars 2015
15
3
Merci
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.
Bogomips
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).
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
4380
2
Merci
hello
préciser le répertoire où elle se trouve avec -L/chemin
Utilisateur anonyme -
oui oui mais ça revient au même :/
dubcek
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
4380 -
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! =)
iso9999
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
dubcek
Messages postés
17759
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
4380 -
il faut préciser avec l'option -L dans quel répertoire se trouve libTableauNoir si elle n'est pas dans /usr/lib