Wofür ist die .la-Datei von libtool gedacht?


Antworten:


139

Es ist eine Textdatei, die eine Beschreibung der Bibliothek enthält.

Es ermöglicht libtooldie Erstellung plattformunabhängiger Namen.

Zum Beispiel libfoogeht an:

Unter 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

Unter Cygwin :

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

Unter Windows MinGW:

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

Dies libfoo.laist die einzige Datei, die zwischen Plattformen aufbewahrt wird, indem libtoolverstanden wird, was passiert mit:

  • Bibliotheksabhängigkeiten
  • Tatsächliche Dateinamen
  • Bibliotheksversion und -revision

Ohne von einer bestimmten Plattform abhängig Implementierung von Bibliotheken.


5
So wandeln Sie die .la-Datei in eine plattformspezifische gemeinsam genutzte lib-Datei um, wie libfoo.la -> libfoo.so. *
theactiveactor

6
Sie können nicht libfoo.la enthält nur Metainformationen, dh in libfoo.la (Textdatei) geschrieben, wo Sie libfoo.so.xyz
Artyom

4
Bedeutet das, dass ich zum Generieren einer .la-Datei libtool verwenden muss (z. B. von automake)? Man kann sich darauf verlassen libtool, die Objektdateien zu verknüpfen ( gnu.org/software/libtool/manual/html_node/Using-Automake.html ), aber wenn ich eine Bibliothek ohne .la verteilen möchte, bedeutet dies, dass das Verknüpfen sehr schwierig sein wird mit Cygwin oder Mingw?
dma_k

Für den Fall, dass jemand diese Version deaktivieren möchte, können Sie -avoid-version in Ihren _la_LDFLAGS anstelle von -version-info
laishiekai

14

Laut http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files werden sie benötigt, um mit Abhängigkeiten umzugehen. Die Verwendung von pkg-config ist jedoch möglicherweise eine bessere Option:

In einer perfekten Welt hätte jede statische Bibliothek, die Abhängigkeiten benötigt, eine eigene PC-Datei für pkg-config, und jedes Paket, das versucht, eine statische Verknüpfung zu dieser Bibliothek herzustellen, würde pkg-config --static verwenden, um die Bibliotheken zum Verknüpfen zu bringen.


10

Ich habe hier sehr gute Erklärungen zu .la-Dateien gefunden: http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Zusammenfassung (so wie ich es verstanden habe): Da libtool intern mit statischen und dynamischen Bibliotheken umgeht (über --diable-shared oder --disable-static), wird ein Wrapper für die von ihm erstellten Bibliotheksdateien erstellt. Sie werden als binäre Bibliotheksdateien in einer von libtool unterstützten Umgebung behandelt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.