Compilation bibliothèque

robert -  
mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

dans un répertoire linux j'ai ces 4 fichiers: file.c file.o file.so et main.c, je souhaite compiler mon main.c en le linkant avec le fichier file.so, quelqu'un aurait il une idée svp? Car l'option -l me retourne dans arrêt cannot find -lfile.so.

merci

1 réponse

mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
Si le fichier ".so" s'appelle /un/repertoire/libtoto.so :

gcc -O2 -W -Wall -Wl,R/un/repertoire main.c file.o -ltoto


Si /un/repertoire est un endroit standard pour une librarie (/lib, /usr/lib, /usr/local/lib) tu peux omettre l'option -Wl,R/un/repertoire.

Tu noteras que les options de compilation on un format qui impose que la librairie soit préfixée "lib" et postfixée ".so", puisque du nom "libtoto.so" il ne subsiste que toto dans les options de compilation...

Au passage, le linkage doit uniquement être fait au moment de compiler le main. Donc pour tous les fichiers intermédiaires (file.o...) tu te contentes de compiler avec gcc -c.

gcc -O2 -W -Wall -c file.c  


Bonne chance
0