Câu trả lời:
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.
ld
là một liên kết tĩnh, trong khi ld.so
là 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 ar
tiệ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 ld
và ld.so
trên hệ thống của bạn.