В чем разница между динамическим компоновщиком и динамическим загрузчиком? - PullRequest
7 голосов
/ 03 апреля 2012

Я знаю, что делает динамический загрузчик. Он загружает программы как и когда запрашивает приложение во время выполнения, тем самым сводя к минимуму отпечаток памяти. Но я действительно не понимаю, что это за динамический компоновщик? И каковы его преимущества? Я читаю много онлайн-материалов, но они говорят абстрактно.

Может кто-нибудь объяснить мне несколько простых примеров?

1 Ответ

6 голосов
/ 03 апреля 2012

Это на самом деле два термина для одной и той же вещи.

В мире Unix термин динамический компоновщик используется для обозначения компонента операционной системы, который связывает динамические библиотеки во время выполнения, тогда как загрузчик в большинстведругие системы выполняют загрузку программ и связывание динамических библиотек.

Поскольку загрузка библиотек в Unix-подобных системах осуществляется отдельным компонентом (чаще всего ld.so), динамический компоновщик считается чем-то отличным от загрузчика программ.,Компиляторы обычно вставляют некоторый код заглушки в начало исполняемого файла для загрузки ld.so, и ld.so продолжит загрузку остальных зависимых библиотек до вызова main.Хотя загрузка программы выполняется в пространстве ядра, связывание динамических библиотек обычно выполняется в пространстве пользователя.

В отличие от Windows, где загрузка программы и связывание динамических библиотек выполняется в режиме ядра.

...