Es un archivo de texto que incluye una descripción de la biblioteca.
Permite libtool
para crear nombres independientes de la plataforma.
Por ejemplo, libfoo
va a:
En 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
Bajo Cygwin:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # libtool library
/bin/cygfoo_1.dll # DLL
En MinGW de Windows:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
/bin/foo_1.dll # DLL
Así que libfoo.la
es el único archivo que se conserva entre plataformas por libtool
permitiendo entender lo que sucede con:
- Dependencias de la biblioteca
- Nombres de archivos reales
- Versión y revisión de la biblioteca
Sin depender de una plataforma específica de implementación de librerías.
Según http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, son necesarios para gestionar las dependencias. Pero usar pkg-config puede ser una mejor opción:
En un mundo perfecto, cada biblioteca estática que necesita dependencias tendría su propio archivo .pc para pkg-config, y cada paquete que intente vincularse estáticamente a esa biblioteca usaría pkg-config --static para vincular las bibliotecas.
Encontré una muy buena explicación sobre los archivos .la aquíhttp://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
Resumen (la forma en que lo entendí):Debido a que libtool se ocupa internamente de bibliotecas estáticas y dinámicas (a través de --diable-shared o --disable-static), crea un contenedor en los archivos de biblioteca que crea. Se tratan como archivos de biblioteca binaria con un entorno compatible con libtool.