Re: Librairie statique

Top Page

Reply to this message
Author: Francois-Xavier Kowalski
Date:  
To: ML Guilde
Subject: Re: Librairie statique
Frederic Mantegazza wrote:

>Est-il possible sous Linux de 'linker' une libraire statique avec une
>librairie dynamique, comme on le fait avec un executable ?
>
>Le but est que le binaire qui se 'link' avec cette librairie statique soit
>automatiquement 'linke' avec la ou la librairie dynanmique.
>


Cela n'est pas possible, car une "librairie" statique est en fait une
concatenation de fichiers de code objet, sans aucun comportement
predefini. Realiser une edition de lien contre une "librarie" statique
reviens tres exactement a realiser une edition de liens contre
l'ensemble des objets contenus dans cette archive.

ar ru libtoto.a toto1.o toto2.o
gcc titi.c -o titi -ltoto

est rigoureusement identique a:

gcc titi.c -o titi toto1.o toto2.o

L'interet (maintenant historique, grace aux librairies partagees) est de
permettre de ne pas inclure dans l'executable cible les fichiers de code
objet dont aucun symbole n'est utilise (directement ou indirectement)
dans l'executable.

En revanche, GNU ld autorise ce principe de chargement "en cascade" avec
2 libraries partagees, quand l'executable utilisateur est genere avec
l'option --allow-shlib-undefined, autrement dit l'option de compilation
-Wl,--allow-shlib-undefined. "info ld" pour plus de details.

A+

--
Francois-Xavier 'FiX' KOWALSKI