Compilation bibliothèque

robert -  
mamiemando Messages postés 33228 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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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