Untuk apa file .la libtool?


Jawaban:


139

Ini adalah file tekstual yang menyertakan deskripsi perpustakaan.

Ini memungkinkan libtooluntuk membuat nama platform-independent.

Misalnya, libfoobuka:

Di bawah 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

Di bawah Cygwin :

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

Di bawah Windows MinGW:

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

Jadi libfoo.laadalah satu-satunya file yang dipertahankan antara platform dengan libtoolmemungkinkan untuk memahami apa yang terjadi dengan:

  • Ketergantungan perpustakaan
  • Nama file yang sebenarnya
  • Versi dan revisi perpustakaan

Tanpa tergantung pada platform implementasi perpustakaan tertentu.


5
jadi bagaimana untuk Anda mengubah file .la untuk platform tertentu bersama file lib, seperti libfoo.la -> libfoo.so *.
theactiveactor

6
Anda tidak dapat libfoo.la hanya memegang informasi meta, yaitu di libfoo.la (file teks) yang ditulis di mana Anda harus menemukan libfoo.so.xyz
Artyom

4
Apakah ini berarti bahwa untuk menghasilkan file .la, saya harus menggunakan libtool (misalnya dari automake)? Orang dapat mengandalkan libtooluntuk menautkan file objek ( gnu.org/software/libtool/manual/html_node/Using-Automake.html ) tetapi jika saya ingin mendistribusikan perpustakaan tanpa .la, artinya itu akan sangat sulit untuk ditautkan dengan itu menggunakan Cygwin atau mingw?
dma_k

Jika ada orang yang ingin menonaktifkan hal-hal versi ini, Anda dapat menggunakan -avoid-versi di _la_LDFLAGS Anda, alih-alih -versi-info
laishiekai

14

Menurut http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files , mereka diperlukan untuk menangani dependensi. Tetapi menggunakan pkg-config mungkin merupakan opsi yang lebih baik:

Dalam dunia yang sempurna, setiap pustaka statis yang memerlukan dependensi akan memiliki file .pc untuk pkg-config, dan setiap paket yang mencoba menautkan pustaka ke pustaka itu akan menggunakan pkg-config --static untuk mendapatkan pustaka yang akan ditautkan.


10

Saya menemukan penjelasan yang sangat bagus tentang file .la di sini http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Rangkuman (Cara saya mengerti): Karena libtool menangani pustaka statis dan dinamis secara internal (melalui --diable-shared atau --disable-static) ia membuat pembungkus pada file pustaka yang dibuatnya. Mereka diperlakukan sebagai file perpustakaan biner dengan lingkungan yang didukung libtool.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.