2009-08-06 14 views

Respuesta

120

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:

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 Windows MinGW:

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

Así libfoo.la es el único archivo que se conserva entre las plataformas por libtool que permite comprender lo que sucede con:

  • dependencias de bibliotecas
  • nombres de los archivos
  • versión de la biblioteca y revisión

Sin dependiendo en una implementación de plataforma específica de bibliotecas.

+3

así que cómo convertir el archivo .la a un archivo lib compartido de plataforma específica, como libfoo.la -> libfoo.so. * – theactiveactor

+4

Puede ' t libfoo.la contiene solo metainformación, es decir, en libfoo.la (archivo de texto) escrito donde debería encontrar libfoo.so.xyz – Artyom

+4

¿Significa que para generar un archivo .la, necesito usar libtool (por ejemplo, de automakeke))? Uno puede confiar en 'libtool' para vincular los archivos objeto (http://www.gnu.org/software/libtool/manual/html_node/Using-Automake.html) pero si quiero distribuir una biblioteca sin .la, ¿significa que será muy difícil vincularse con Cygwin o mingw? –

7

Según http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, son necesarios para manejar dependencias. Pero el uso de pkg-config puede ser una mejor opción:

En un mundo perfecto, cada biblioteca estática necesidad dependencias tendría su propio archivo .pc para PKG-config, y cada paquete que intenta vincular estáticamente a la biblioteca haría utilice pkg-config --static para hacer que las bibliotecas se vinculen.

6

me pareció muy buena explicación acerca de los archivos .la aquí http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Resumen (La forma en que entendí): Debido a ofertas libtool con las bibliotecas estáticas y dinámicas internamente (a través de --diable-compartida o --disable -static) crea un contenedor en los archivos de biblioteca que crea. Se tratan como archivos de biblioteca binarios con el entorno compatible con libtool.