Créer et utiliser une bibliothèque avec les outils GNU

Problème

Vos fonctions sont utilisées dans plusieurs de vos programmes et vous voulez factoriser votre code en le plaçant dans une bibliothèque que vos programmes utiliseront.

Solution

Compilez vos fichiers source avec l’option -fPIC du compilateur gcc. Donnez à l’éditeur de liens les options suivantes : -shared -Wl,-soname,nom.so.majeur

Discussion

Supposons que nous voulions créer une bibliothèque libtest.so.1.2 à partir des fichiers source1.c et source2.c.

Ces fichiers source sont semblables à des fichiers source de programmes normaux. L’absence de fonction main() propre aux programmes constitue la seule exception notable.

Nous compilons d’abord les fichiers objets avec :


gcc -Wall -c -fPIC source1.c -o source1.o 
gcc -Wall -c -fPIC source2.c -o source2.o
 

À l’édition des liens, vous exécutez :


gcc -shared -Wl,-soname,libtest.so.1 source1.o source2.o 
-o libtest.so.1.2
 

Attention ! Remarquez l’absence d’espace après les virgules pour la syntaxe de l’option -Wl.

Si la création d’une bibliothèque partagée peut sembler simple, il faut néanmoins avoir en tête certains points. Commençons par aborder le principe de nommage. En effet, le nom d’une bibliothèque n’est pas simplement le nom du fichier contenant le code exécutable de la bibliothèque. Le nom est propre à...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Introduction
Suivant
Charger une bibliothèque de manière dynamique