Tệp .la của libtool để làm gì?


Câu trả lời:


139

Nó là một tập tin văn bản bao gồm một mô tả của thư viện.

Nó cho phép libtooltạo ra các tên độc lập với nền tảng.

Ví dụ: libfoođi tới:

Trong 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

Theo Cygwin :

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

Trong Windows MinGW:

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

Vì vậy, libfoo.latệp duy nhất được bảo tồn giữa các nền tảng bằng cách libtoolcho phép hiểu những gì xảy ra với:

  • Thư viện phụ thuộc
  • Tên tập tin thực tế
  • Phiên bản thư viện và sửa đổi

Không phụ thuộc vào một nền tảng thực hiện cụ thể của các thư viện.


5
vậy làm thế nào để bạn bật file .la đến một cụ nền tảng chia sẻ tập tin lib, như libfoo.la -> libfoo.so *.
theactiveactor

6
Bạn không thể libfoo.la chỉ giữ thông tin meta, tức là trong libfoo.la (tệp văn bản) được viết ở đâu bạn nên tìm libfoo.so.xyz
Artyom

4
Có nghĩa là để tạo tệp .la, tôi cần sử dụng libtool (ví dụ: từ automake)? Người ta có thể dựa vào libtoolđể liên kết các tệp đối tượng ( gnu.org/software/libtool/manual/html_node/Using-Automake.html ) nhưng nếu tôi muốn phân phối thư viện mà không có .la, điều đó có nghĩa là sẽ rất khó để liên kết với nó bằng Cygwin hay mingw?
dma_k

Trong trường hợp bất kỳ ai muốn tắt công cụ phiên bản này, bạn có thể sử dụng phiên bản -avoid trong _la_LDFLAGS của bạn, thay vì -version-thông tin
laishiekai

14

Theo http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files , họ cần thiết để xử lý các phụ thuộc. Nhưng sử dụng pkg-config có thể là một lựa chọn tốt hơn:

Trong một thế giới hoàn hảo, mọi thư viện tĩnh cần phụ thuộc sẽ có tệp .pc riêng cho pkg-config và mọi gói cố gắng liên kết tĩnh với thư viện đó sẽ sử dụng pkg-config --static để khiến các thư viện liên kết đến.


10

Tôi tìm thấy lời giải thích rất hay về các tệp .la tại đây http://openbooks.sourceforge.net/books/wga/deals-with-lologists.html

Tóm tắt (Theo cách tôi hiểu): Bởi vì libtool xử lý các thư viện tĩnh và động trong nội bộ (thông qua --dposed-shared hoặc --disable-static), nó tạo ra một trình bao bọc trên các tệp thư viện mà nó xây dựng. Chúng được coi là các tệp thư viện nhị phân với trong môi trường được hỗ trợ libtool.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.