Respuestas:
Es un archivo de texto que incluye una descripción de la biblioteca.
Permite libtool
crear nombres independientes de la plataforma.
Por ejemplo, libfoo
va a:
Bajo 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
Debajo de Cygwin :
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # libtool library
/bin/cygfoo_1.dll # DLL
En Windows MinGW:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
/bin/foo_1.dll # DLL
Entonces, libfoo.la
es el único archivo que se conserva entre plataformas al libtool
permitir comprender lo que sucede con:
Sin depender de una plataforma específica de implementación de bibliotecas.
libtool
para vincular los archivos de objeto ( gnu.org/software/libtool/manual/html_node/Using-Automake.html ) pero si quiero distribuir una biblioteca sin .la, significa que será muy difícil vincular con él usando Cygwin o mingw?
De acuerdo con http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files , son necesarios para manejar las dependencias. Pero usar pkg-config puede ser una mejor opción:
En un mundo perfecto, cada biblioteca estática que necesite dependencias tendría su propio archivo .pc para pkg-config, y cada paquete que intente vincular estáticamente a esa biblioteca usaría pkg-config --static para que las bibliotecas se vinculen.
Encontré una muy buena explicación sobre los archivos .la aquí http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
Resumen (tal como lo entendí): dado que libtool trata con bibliotecas estáticas y dinámicas internamente (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 binarios con un entorno compatible con libtool.