Tôi hiện đang cố gắng chuyển một ứng dụng C sang AIX và đang bị lẫn lộn. Các tập tin .a và .so là gì và chúng được sử dụng như thế nào khi xây dựng / chạy một ứng dụng?
Tôi hiện đang cố gắng chuyển một ứng dụng C sang AIX và đang bị lẫn lộn. Các tập tin .a và .so là gì và chúng được sử dụng như thế nào khi xây dựng / chạy một ứng dụng?
Câu trả lời:
Thư viện lưu trữ (.a) được liên kết tĩnh tức là khi bạn biên dịch chương trình của mình với tùy chọn -c trong gcc. Vì vậy, nếu có bất kỳ thay đổi nào trong thư viện, bạn cần biên dịch và xây dựng lại mã của mình.
Ưu điểm của .so (đối tượng chia sẻ) so với thư viện .a là chúng được liên kết trong thời gian chạy tức là sau khi tạo tùy chọn .o tệp -o của bạn trong gcc. Vì vậy, nếu có bất kỳ thay đổi nào trong tệp .so, bạn không cần phải biên dịch lại chương trình chính của mình. Nhưng hãy chắc chắn rằng chương trình chính của bạn được liên kết với tệp .so mới bằng lệnh ln.
Điều này sẽ giúp bạn xây dựng các tập tin .so. http://www.yolinux.com/TUTORIALS/L LibraryArchives-StaticAndDocate.html
Hi vọng điêu nay co ich.
pic
(mã độc lập vị trí)?
.a là các thư viện tĩnh. Nếu bạn sử dụng mã được lưu trữ bên trong chúng, nó sẽ được lấy từ chúng và được nhúng vào tệp nhị phân của riêng bạn. Trong Visual Studio, đây sẽ là các tệp .lib.
.so là các thư viện động. Nếu bạn sử dụng mã được lưu trữ bên trong chúng, nó sẽ không được lấy và nhúng vào tệp nhị phân của riêng bạn. Thay vào đó, nó chỉ được tham chiếu, do đó nhị phân sẽ phụ thuộc vào chúng và mã từ tệp để được thêm / tải khi chạy. Trong Visual Studio / Windows, đây sẽ là các tệp dll (với các tệp .lib nhỏ chứa thông tin liên kết).
.lib
tệp nhỏ .dll
được gọi là thư viện nhập khẩu.
Các tệp .a thường là các thư viện được liên kết tĩnh (hoặc lưu trữ chính xác hơn) và
.so là các thư viện được liên kết động.
Để thực hiện một cổng, bạn sẽ cần mã nguồn được biên dịch để tạo chúng hoặc các tệp tương đương trên máy AIX của bạn.
Chúng được sử dụng trong giai đoạn liên kết. .a
các tệp được liên kết tĩnh và .so
các tệp được sắp xếp theo liên kết, do đó thư viện là cần thiết bất cứ khi nào bạn chạy exe.
Bạn có thể tìm thấy nơi chúng được lưu trữ bằng cách xem bất kỳ thư mục lib nào ... /usr/lib
và /lib
có hầu hết chúng, và đó cũng là LIBRARY_PATH
biến môi trường.
Wikipedia là một nguồn tốt cho thông tin này.
Để tìm hiểu về các tệp thư viện tĩnh như .a hãy đọc tĩnh điện
Để tìm hiểu về các tệp thư viện được chia sẻ như .so đọc Library_ (tính toán) #Shared_l library Trên trang này, cũng có thông tin hữu ích trong phần Đặt tên tệp .
a
rchive và một là bjects
haredo