A cosa servono i file .la di libtool?


Risposte:


139

È un file testuale che include una descrizione della libreria.

Permette libtooldi creare nomi indipendenti dalla piattaforma.

Ad esempio, libfoova a:

Sotto 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

Sotto Cygwin :

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

In Windows MinGW:

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

Quindi libfoo.laè l'unico file che viene conservato tra le piattaforme libtoolconsentendo di capire cosa succede con:

  • Dipendenze della biblioteca
  • Nomi dei file effettivi
  • Versione e revisione della libreria

Senza dipendere da una specifica piattaforma di implementazione delle librerie.


5
quindi come trasformare il file .la in un file lib condiviso specifico per la piattaforma, come libfoo.la -> libfoo.so. *
theactiveactor

6
Non puoi libfoo.la contenere solo meta informazioni, cioè in libfoo.la (file testuale) scritto dove dovresti trovare libfoo.so.xyz
Artyom,

4
Significa che per generare il file .la, devo usare libtool (es. Da automake)? Si può fare affidamento sul libtoolcollegamento dei file oggetto ( gnu.org/software/libtool/manual/html_node/Using-Automake.html ) ma se voglio distribuire una libreria senza .la, significa che sarà molto difficile collegarsi con esso usando Cygwin o mingw?
dma_k,

Nel caso in cui qualcuno volesse disabilitare questa versione, puoi usare -avoid-version nel tuo _la_LDFLAGS, invece di -version-info
laishiekai

14

Secondo http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files , sono necessari per gestire le dipendenze. Ma usare pkg-config potrebbe essere un'opzione migliore:

In un mondo perfetto, ogni libreria statica che necessita di dipendenze avrebbe il proprio file .pc per pkg-config, e ogni pacchetto che tenta di collegarsi staticamente a quella libreria userebbe pkg-config --static per ottenere il collegamento delle librerie.


10

Ho trovato un'ottima spiegazione sui file .la qui http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Riepilogo (Il modo in cui ho capito): Poiché libtool si occupa internamente di librerie statiche e dinamiche (tramite --diable-shared o --disable-static) crea un wrapper sui file di libreria che crea. Sono trattati come file di libreria binaria con ambiente supportato in libtool.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.