Jump to content

Прямая привязка

Прямая привязка — это функция компоновщика и динамического компоновщика в Solaris и OpenSolaris . Он предоставляет метод, позволяющий библиотекам напрямую связывать символы с другими библиотеками, а не слабо привязываться к ним и предоставлять динамическому компоновщику возможность выяснить, какая библиотека содержит символ.

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

Этот вид слабого связывания заставляет динамический компоновщик решать, какая библиотека какой символ содержит, при запуске исполняемого файла. Например, динамический компоновщик в Linux считывает раздел DT_NEEDED объекта ELF и загружает необходимые библиотеки; но не сообщается, где находятся необходимые символы. Для этого он должен перебрать каждый неразрешенный символ в объекте и для каждого из них перебрать каждую загруженную библиотеку, проверяя, пока не найдет соответствующий символ. Это может занять много времени.

Прямая ссылка решает эту проблему, сохраняя эквивалентный список указателей на записи DT_NEEDED в отдельном разделе ELF. Каждый указатель соответствует символу в объекте; таким образом, эти указатели создают связь между символом и записью DT_NEEDED. Это позволяет компоновщику найти библиотеку, указанную в конкретной записи DT_NEEDED, и проверять только ее таблицу символов для каждого символа, а не перебирать потенциально каждую библиотеку для каждого символа.

[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5bb452a800941c72c64ef8f18536c81e__1651110480
URL1:https://arc.ask3.ru/arc/aa/5b/1e/5bb452a800941c72c64ef8f18536c81e.html
Заголовок, (Title) документа по адресу, URL1:
Direct binding - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)