Sự khác biệt giữa tập tin .a và .so là gì?


Câu trả lời:


54

Một .atập tin là một thư viện tĩnh, trong khi một .sotập tin là một đối tượng chia sẻ (động) thư viện tương tự như một DLL trên Windows. Có một số thông tin chi tiết về sự khác biệt giữa hai trên trang này .


18
.achỉ có thể được bao gồm như là một phần của chương trình trong quá trình biên dịch. .soCó thể được "nhập" trong khi chương trình tải.
LawrenceC

2
không có nghĩa là gì?
hfrmobile

2
@hfrmobile Chữ viết tắt của kho lưu trữ - thư viện tĩnh là tập hợp các tệp đối tượng được tạo bằng artiện ích. Thêm thông tin ở đây
ajk

28

Theo sau, một tệp .a là một kho lưu trữ "ar". Không giống như một kho lưu trữ tar, nó lưu trữ các tệp .o hoặc đối tượng, cho phép chúng được rút ra khỏi kho lưu trữ và được liên kết thành một chương trình, trong số những thứ khác. Bạn có thể sử dụng ar để lưu trữ các tệp khác nếu bạn muốn.

Ví dụ, bạn có thể lấy danh sách các thành viên của tệp ar với tham số -t:

ar -t /usr/lib/libc.a

Tệp .so là tệp "đối tượng chia sẻ" và có nhiều thông tin hơn có sẵn cho trình liên kết để các thành viên có thể được liên kết đến một chương trình tải càng nhanh càng tốt.

Ví dụ: thử:

objdump -T /lib/libc-2.11.1.so

.

Thật thú vị, một tập tin .so cũng có thể là một chương trình chính thức. Chẳng hạn, thử chạy /lib/libc.so.6 . (Đáng buồn thay, phần cuối cùng này dường như không hoạt động trên các hệ thống hiện đại hơn. Không phải đó là một mất mát lớn.)


Typo. bạn có nghĩa là để viết ar -t /usr/lib/libc.a. Trên thực tế, -điều này dường như không cần thiết trong trường hợp này. Cũng /lib/libc.so.6.chỉ in một số đầu ra. Tôi không biết nếu tôi sẽ gọi nó là a full fledged program.
Faheem Mitha

1
Đây là một chương trình đầy đủ theo nghĩa là nó có một biểu tượng chính để người thực hiện tìm thấy.
Hack Saw

2
Bạn cũng có thể chạy lddtrên .so, và nó sẽ cho bạn thấy những thư viện khác mà nó sử dụng. Tĩnh sẽ trở lại với một thông báo nói rằng nó không phải là một thư viện động.
Marcin
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.