Créer une bibliothèque dynamique liée statiquement aux bibliothèques dont elle dépend

Problème

Vous générez une bibliothèque dynamique, liée à d’autres bibliothèques, mais vous souhaitez lier statiquement ces autres bibliothèques à la vôtre.

Solution

Indiquez la forme statique des bibliothèques à lier à votre bibliothèque dynamique.

Discussion

Lorsque vous déployez un programme ou une bibliothèque dynamique, vous pouvez avoir besoin de lier statiquement les bibliothèques dont la vôtre dépend. Cela offre l’avantage de ne pas dépendre de ces bibliothèques dans l’environnement où votre bibliothèque va être utilisée. Pour cela, il suffit de disposer des bibliothèques statiques dont dépend la vôtre et de les indiquer ainsi à l’éditeur de liens :


$ gcc -shared -Wl,-soname,libtest.so.1 source1.o source2.o 
/usr/lib/libglib-2.0.a -o libtest.so.1.0.0 

Cet exemple montre comment générer une bibliothèque dynamique liée statiquement à la bibliothèque glib.

Cette manière de faire présente néanmoins un danger lors d’une séance de débogage. En effet, une modification effectuée dans une bibliothèque dépendante n’est pas répercutée sur notre bibliothèque libtest.so.1.0.0 à moins de recompiler...

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
Lancer une fonction du programme depuis la bibliothèque dynamique
Suivant
Introduction