Czym są libtool .la
pliki dla? Jak są używane ze wspólnym obiektem?
Odpowiedzi:
123 dla odpowiedzi № 1Jest to plik tekstowy zawierający opis biblioteki.
To pozwala libtool
tworzyć nazwy niezależne od platformy.
Na przykład, libfoo
idzie do:
Pod Linuksem:
/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
Pod Cygwin:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # libtool library
/bin/cygfoo_1.dll # DLL
W systemie Windows MinGW:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # "libtool" library
/bin/foo_1.dll # DLL
Więc libfoo.la
jest jedynym plikiem, który jest zachowany między platformami przez libtool
pozwalając zrozumieć, co dzieje się z:
- Zależności od bibliotek
- Rzeczywiste nazwy plików
- Wersja biblioteki i wersja
Bez zależności od konkretnej implementacji bibliotek przez platformę.
7 dla odpowiedzi nr 2
Według http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, "są one potrzebne do obsługi zależności. Ale użycie pkg-config może być lepszą opcją:
W idealnym świecie, każda statyczna biblioteka potrzebujezależności miałyby swój własny plik .pc dla pkg-config, a każdy pakiet próbujący statycznie połączyć się z tą biblioteką używałby pkg-config --static, aby połączyć biblioteki z bibliotekami.
6 dla odpowiedzi nr 3
Znalazłem tutaj bardzo dobre wyjaśnienie dotyczące plików .la http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
Podsumowanie (sposób, w jaki zrozumiałem): Ponieważ libtool zajmuje się wewnętrznie bibliotekami statycznymi i dynamicznymi (poprzez --diable-shared lub --disable-static), tworzy opakowanie dla plików biblioteki, które tworzy. Są one traktowane jako pliki bibliotek binarnych w środowisku obsługiwanym przez libtool.