¿Para qué sirven los .la
archivos de libtool ? ¿Cómo se usan con un objeto compartido?
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.