Trong quá trình xây dựng trình biên dịch dịch mã sang định dạng tạm thời, hãy gọi nó là tệp đối tượng. Trong tệp đối tượng, có một danh sách các ký hiệu mà trình biên dịch không thể giải quyết, thường là các định nghĩa ở nơi khác. Giai đoạn liên kết chịu trách nhiệm giải quyết các biểu tượng này.
Quy trình xây dựng sẽ cung cấp tệp cho trình liên kết cho đến khi tất cả các ký hiệu được giải quyết. Không có danh sách phụ thuộc vật lý, chỉ danh sách các biểu tượng để giải quyết. Điều này cho phép các ký hiệu được giải quyết bằng cách sử dụng các thư viện khác nhau. Ví dụ, người ta có thể muốn sử dụng một thư viện Windows cho các vấn đề cụ thể của Windows; một thư viện linux cho các vấn đề cụ thể của Linux. Điều này không nói rõ rằng một chương trình phụ thuộc vào thư viện Windows; nó cũng có thể phụ thuộc vào Linux.
Một số trình biên dịch có thể tạo danh sách phụ thuộc, thường là để sử dụng trong quá trình xây dựng. Tuy nhiên, trách nhiệm cuối cùng là lập trình viên.
Nguồn
2011-10-20 20:45:08
Nếu tôi không muốn kết quả thực thi có gánh nặng thì tôi có thể làm gì? – jmasterx
@Milo: bạn có thể liên kết các thư viện tĩnh của các phụ thuộc của libSomthing vào libA. –
@Milo: nghĩa là bạn không muốn phụ thuộc chia sẻ? Sau đó, bạn chỉ cần liên kết mọi thứ tĩnh, chỉ sử dụng các thư viện tĩnh. Điều này sẽ dẫn đến một tập tin thực thi độc lập lớn không phụ thuộc. Nhưng được cảnh báo, rất khó để xây dựng một số thư viện như thư viện tĩnh. – vines