2012-09-07 35 views
5

Khi nói đến việc sử dụng thiết bị đầu cuối để xây dựng thư viện theo cách thủ công và tôi rất tiếc là không có nhiều kinh nghiệm và tôi bị kẹt ở đây một chút.Làm thế nào để bạn sử dụng libtool để tạo các tệp .a (thư viện tĩnh) trên Mac OS?

Tôi đã tải xuống thư viện cho mục tiêu-c đi kèm với makefiles và các tệp như vậy.

Tôi có thể thấy thư mục cũng chứa tệp thi hành được gọi là "libtool", tôi đã thực hiện một số tìm kiếm và tôi cho rằng đây là chương trình tôi phải sử dụng để tạo các tệp cần thiết .a? Thật không may, tôi thực sự không thể tìm thấy bất kỳ bài viết hữu ích cho điều này mà dường như làm việc.

Thư mục cho thư viện chứa một số sh file, .pc tập tin và cũng có một số .la tập tin, nhưng tôi là một chút không chắc chắn về những người thân mà tôi phải sử dụng làm đầu vào cho libtool để biên dịch chúng thành tệp .a.

Vì vậy, câu hỏi của tôi là những tệp nào bạn phải nhập vào libtool để biên dịch chúng thành tệp cần thiết .a? Và các lệnh nào bạn sử dụng chính xác để thực hiện điều này?

Cảm ơn tất cả các bạn đã dành thời gian :)

Trả lời

8

Đầu tiên một chút giới thiệu về thư viện tĩnh:

thư viện tĩnh trong môi trường Unix (như Mac OSX và Linux quá) là thực sự chỉ là một kho lưu trữ các tập tin đối tượng được tạo bởi chương trình dòng lệnh ar.

Đó là những gì mà tiện ích mở rộng .a là viết tắt của: Lưu trữ.

Để tạo một thư viện tĩnh với một số đối tượng tập tin, bạn có thể sử dụng lệnh như thế này:

ar crv libmy_library.a objectfile1.o objectfile2.o 

Đối với câu hỏi thực tế của bạn, libtool nên được gọi là tự động từ các makefile, tạo thư viện, đó là tệp kết thúc bằng .la. Tuy nhiên, đây không phải là thư viện thực, thư viện thực nằm trong một thư mục ẩn. Bạn có thể tìm thấy nó bằng cách thực hiện ví dụ:

find . -name '*.a' 

Nhưng như tôi đã nói, makefile nên đã chăm sóc tất cả mọi thứ, bao gồm cả cài đặt các thư viện đúng địa điểm chính xác khi bạn làm ví dụ make install.

Để biết thông tin về libtool, hãy xem this site.

+0

Tuyệt vời, cảm ơn thông tin bổ sung! Rất hữu ích :) Và có tôi phát hiện ra rằng makefile đã thực sự xây dựng các thư viện, không chỉ trong cùng một thư mục;) Chúng được xây dựng vào một thư mục miền địa phương của hệ thống tập tin. Cảm ơn bạn vì sự giúp đỡ :) – CodingBeagle

Các vấn đề liên quan