2012-04-03 33 views
7

Tôi biết trình tải động hoạt động như thế nào. Nó tải các chương trình như và khi được yêu cầu bởi các ứng dụng tại thời gian chạy do đó giảm thiểu việc in chân bộ nhớ. Nhưng tôi thực sự không nhận được liên kết động này là gì? Và lợi thế của nó là gì? Tôi đọc nhiều nội dung trực tuyến nhưng họ đang nói theo thuật ngữ trừu tượng.Sự khác biệt giữa trình liên kết động và trình tải động là gì?

Có ai có thể giải thích cho tôi một số ví dụ đơn giản không?

+0

http://stackoverflow.com/questions/311882/what-do-statically-linked-and-dynamically-linked-mean/311889#311889 – Vijay

+0

@peter cảm ơn! Nó đã giúp đỡ. –

Trả lời

6

Chúng thực sự là hai thuật ngữ cho cùng một điều.

Trong thế giới Unix, thuật ngữ liên kết động được sử dụng để biểu thị thành phần của hệ điều hành liên kết các thư viện động khi chạy, trong khi bộ nạp trên hầu hết các hệ thống khác thực hiện cả tải chương trình và liên kết các thư viện động.

Vì thư viện tải dưới hệ thống giống Unix được thực hiện bởi một thành phần riêng biệt (ld.so thường xuyên nhất), trình liên kết động được coi là khác biệt so với trình tải chương trình. Trình biên dịch thường chèn một số mã sơ khai vào đầu tệp thực thi để tải ld.sold.so sẽ tiếp tục tải các thư viện phụ thuộc còn lại trước khi main được gọi. Trong khi tải chương trình được thực hiện trong kernelspace, việc liên kết các thư viện động thường được thực hiện trong không gian người dùng.

Điều này không giống như Windows, nơi cả chương trình tải và liên kết thư viện động được thực hiện ở chế độ lõi.

Các vấn đề liên quan