it-swarm-vi.com

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

Theo tôi hiểu họ là thư viện, nhưng sự khác biệt giữa hai là gì?

70
Erik B

Một .a tệp là một thư viện tĩnh, trong khi một .so file là thư viện chia sẻ đối tượng (động) tương tự như a 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.

55
ajk

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.)

29
Hack Saw