Sự khác biệt giữa 'ld' và 'ld.so'?


8

Mặc dù cả hai được gọi là "trình liên kết" và được sử dụng để liên kết nhị phân, tôi thực sự không thể hiểu chúng khác nhau như thế nào. Bất cứ ai có thể cho tôi biết sự khác biệt của họ?

Câu trả lời:


8

Không cần quá kỹ thuật: Cả hai đều là "trình liên kết", tức là một công cụ kết hợp / tải một đoạn mã được biên dịch với / vào một đoạn mã được biên dịch khác.

ldlà một liên kết tĩnh, trong khi ld.solà một liên kết động.

Các chữ cái so, tôi tin là viết tắt của "đối tượng chia sẻ" và bạn thường sẽ xem nó là hậu tố tên tệp của các thư viện dùng chung, tức là các thư viện có thể được liên kết động với các chương trình (một thư viện được "chia sẻ" giữa một số chương trình) . Ngược lại, một thư viện tĩnh thường có hậu tố tên tệp .a, cho "archive" (được tạo bởi artiện ích).

Một trình liên kết tĩnh liên kết một chương trình hoặc thư viện tại thời gian biên dịch, thường là bước cuối cùng trong quy trình biên dịch, tạo ra một tệp thực thi nhị phân hoặc một thư viện. Trong trường hợp tệp thực thi nhị phân, nó có thể là tệp nhị phân tĩnh với tất cả các thư viện được tải vào chính tệp nhị phân hoặc nó có thể là tệp nhị phân được liên kết động với chỉ một số thư viện được liên kết tĩnh.

Một trình liên kết động tải các thư viện được liên kết động tại thời gian biên dịch vào không gian địa chỉ của tiến trình trong thời gian chạy.

Xem hướng dẫn sử dụng cho ldld.sotrên hệ thống của bạn.

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.