Pb compilation: /usr/bin/ld: cannot find -l..

Fermé
Utilisateur anonyme - 6 mai 2012 à 07:17
dubcek
Messages postés
18515
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
26 juin 2022
- 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

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
dubcek
Messages postés
18515
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
26 juin 2022
5 543
6 déc. 2012 à 12:35
libfunc.so est donc dans .
essayer -lfunc
0
Super ca a l'air de fonctionner. Je n etais pas du tout au courant de se mecanisme !
0
dubcek
Messages postés
18515
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
26 juin 2022
5 543
6 déc. 2012 à 14:46
regarder la man page de ld, l'éditeur de lien
0
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 ^^ !
0
dubcek
Messages postés
18515
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
26 juin 2022
5 543
6 déc. 2012 à 15:26
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
0