web-dev-qa-db-fra.com

À quoi servent le fichier .la de libtool?

A quoi servent les fichiers .la De libtool? Comment sont-ils utilisés avec un objet partagé?

142
chappar

C'est un fichier texte qui comprend une description de la bibliothèque.

Il permet à libtool de créer des noms indépendants de la plate-forme.

Par exemple, libfoo va à:

Sous Linux:

/lib/libfoo.so       # Symlink to shared object
/lib/libfoo.so.1     # Symlink to shared object
/lib/libfoo.so.1.0.1 # Shared object
/lib/libfoo.a        # Static library
/lib/libfoo.la       # 'libtool' library

Sous Cygwin :

/lib/libfoo.dll.a    # Import library
/lib/libfoo.a        # Static library
/lib/libfoo.la       # libtool library
/bin/cygfoo_1.dll    # DLL

Sous Windows MinGW:

/lib/libfoo.dll.a    # Import library
/lib/libfoo.a        # Static library
/lib/libfoo.la       # 'libtool' library
/bin/foo_1.dll       # DLL

Alors libfoo.la est le seul fichier préservé entre plates-formes par libtool permettant de comprendre ce qui se passe avec:

  • Dépendances de la bibliothèque
  • Noms de fichiers actuels
  • Version de la bibliothèque et révision

Sans dépendre d'une implémentation spécifique de librairies.

131
Artyom

Selon http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files , ils sont nécessaires pour gérer les dépendances. Mais utiliser pkg-config peut être une meilleure option:

Dans un monde parfait, chaque bibliothèque statique nécessitant des dépendances disposerait de son propre fichier .pc pour pkg-config, et chaque paquet essayant de se lier de manière statique à cette bibliothèque utiliserait pkg-config --static pour que les bibliothèques soient reliées.

11
Thomas Leonard

J'ai trouvé une très bonne explication sur les fichiers .la ici http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Résumé (ma compréhension): Parce que libtool gère les bibliothèques statiques et dynamiques en interne (via --diable-shared ou --disable-static), il crée un wrapper sur les fichiers de bibliothèque qu’il crée. Ils sont traités comme des fichiers de bibliothèque binaires dans un environnement pris en charge par libtool.

9
Rak