È un file testuale che include una descrizione della libreria.
Permette libtool
per creare nomi indipendenti dalla piattaforma.
Ad esempio, libfoo
va 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 conservato tra piattaforme da libtool
permettendo di capire cosa succede con:
- Dipendenze di libreria
- Nomi di file effettivi
- Versione e revisione della libreria
Senza dipendere da una specifica implementazione della piattaforma delle librerie.
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 alle librerie.
Ho trovato un'ottima spiegazione sui file .la qui http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
Riepilogo (come 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 binari con un ambiente supportato da libtool.