Question

Mon application est liée à libsamplerate.a. Je le fais pour faciliter la distribution du binaire final.

Je crains que le code contenu dans le fichier .a ne dépende que d'autres bibliothèques que je devrais également distribuer.

Mais si ce n’est pas le cas, je crains de trop gonfler ma demande en incluant plusieurs copies de, par exemple. libc.

En quoi consistera exactement libsamplerate.a? Juste le bytecode de libsamperate? Ou plus?

Était-ce utile?

La solution

Une bibliothèque statique est simplement une collection de fichiers objets. Lorsque vous compilez un programme dans une bibliothèque statique, le code objet des fonctions utilisées par votre programme est copié de la bibliothèque dans votre exécutable. La liaison avec une bibliothèque statique ne fera en sorte que des fonctions extérieures à cette bibliothèque soient incluses dans votre code.

Autres conseils

Un fichier .a est fondamentalement juste un paquet de fichiers .o. Vous pouvez en faire la démonstration à l'aide de l'outil ar .

Par exemple, pour afficher le contenu de votre bibliothèque:

ar -t libsamplerate.a

Pour créer un fichier .a à partir de rien:

ar -r tim.a *.txt

Juste le code d'objet pour libsamplerate. La liaison statique avec une seule bibliothèque ne fait pas que toutes les bibliothèques soient liées statiquement; ce serait mauvais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top