Compiler avec une librairie partagée

Fermé
sabrina - 30 janv. 2013 à 20:37
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 4 févr. 2013 à 08:12
Bonjour,

Dans mon répertoire /home/travail j'ai ceci:

file.c file.o libmyfile.so main.c

je souhaite compiler mon main.c avec la librairie partagée mais rien n'y fait, voici le résultat:

gcc main.c -lmyfile.so
/usr/bin/ld: cannot find -lmyfile.so
collect2: ld a retourné 1 code d'état d'exécution

Voici quelques infos si ça peut vous aider:

echo $LD_LIBRARY_PATH
/usr/local/bin

Meme avec ldconfig je n'ai aucun résultat, quelqu'un aurait il une idée?
merci
A voir également:

9 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié par mamiemando le 31/01/2013 à 10:04
Il faudrait nous indiquer où est positionné libmyfile.so.

Si c'est dans /usr/local/lib, /usr/lib ou /lib tu peux directement ajouter l'option -lmyfile.
Si c'est un autre répertoire il faut passer des options à gcc pour explorer d'autres répertoires que les trois dossiers par défaut que je t'ai listé.

De la même manière que l'option -I (ou -isystem) permet d'enrichir la liste des dossiers dans lesquels gcc va chercher des headers (fichiers .h) sont si je ne me trompe pas :
-L enrichit la liste des répertoires dans lesquels il cherche des ".a"
-Wl,-R enrichit la liste des répertoires dans lesquels il cherche des ".so"

Ainsi, si le fichier s'appelle /home/toto/libmyfile.so, je pense que ta ligne de compilation devient la suivante :

gcc -Wl,-R /home/toto main.c file.o -lmyfile


Bonne chance
0