Salutations,
Je suis en train d'essayer de faire une librairie partagée qui pourrait être utilisée via 'pkg-config' ou l'option '-l' du compilateur.
Je n'y arrive pas, même en suivant les tutoriels, et en utilisant des outils comme 'libtool'...
libtool j'ai laissé tomber, c'est trop neuf pour moi et j'ai pas le temps de lire la documentation et la littérature.
Par contre, j'ai trouvé pas mal d'exemples qui me semblent valables sur la manière de créer une librairie partagée (shared library)
Voici comment je procède:
1. j'ai un fichier source cssm_wide.c que je compile avec ces deux commandes
2. je copie le fichier compilé dans shared dans /usr/lib64
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gcc -c -fPIC -O cssm_wide.c -o static/staticcssm_wide.o gcc -shared -Wall static/staticcssm_wide.o -o shared/libcssm.so.1.0.1
3. je lance ldconfig
4. je lance la commande
et j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ldconfig -p | grep cssm
libcssm.so.1.0.1 (libc6,x86-64) => /usr/lib64/libcssm.so.1.0.1
Je me dis "on est bons..."
5. Je fais un programme de test qui contient des appels de fonctions qui sont propres à cette librairie, je sens déjà que ça craint car il manque le lien vers le fichier cssm_wide.h qui normalement devrait se trouver dans /usr/include, mais j'essaye quand même.
Quand je teste le programme avec l'option '-l' l'utilitaire 'ld' me dit "je ne sais pas ce c'est '-llibcssm'... (il ne trouve pas le lien entre libcssm et la librairie qui se trouve dans /usr/lib64).
Je sais que, normalement, il devrait être possible de spécifier un 'soname' (shared object name) mais je n'y parviens pas... et libtool, malgré les exemples dans la documentation ne me permet pas d'aller aussi loin.
QUESTIONS:
1. Comment fait-on pour créer une librairie qui permet par la suite d'utiliser pkg-config ?
2. Comment fait-on pour créer une librairie qui permet par la suite de passer au compilateur gcc via l'option '-l' le nom de cette librairie ?
Partager