Документация по LinuxLinuxDoc.Ru 🔍

ld.so, ld-linux.so* - программа динамической привязки

НАЗВАНИЕ
ld.so, ld-linux.so* - программа динамической привязки

ОПИСАНИЕ
ld.so загружает разделяемые библиотеки, требуемые
программам, подготавливает программы к запуску и затем
исполняет ее. Пока явно не будет указан параметр -static
для ld во время компиляции, все программы Linux будут
незавершены и будут требовать дальней привязки к
библиотекам при запуске.

Разделяемые бибилотеки, необходимые программам, ищутся по
такому алгоритму

o Использовать динамический атрибут секции DT_RPATH
бинарного файла если он существует, а атрибут
DT_RUNPATH не существует.

o Использовать переменную окружения LD_LIBRARY_PATH ,
за исключением случаев, когда исполняемым файлом
является бинарный файл, меняющий/устанавливающий
идентификаторы пользователей; в этом случае она
игнорируется.

o Использовать атрибут динамической секции DT_RUNPATH
бинарного фалйа, если существует.

o Из кэш-файла /etc/ld.so.cache, содержащего
скомпилированный список бибилиотек, ранее найденных
в пути поиска. Однако, если исполняемый файл был
связан с параметром -znodeflib, то библиотеки,
находящиеся в каталогах по умолчанию, пропускаются.

o В каталоге по умолчанию /lib, затем в /usr/lib.
Если бинарный файл был связан с параметром -z node-
flib , то этот шаг пропускается.

СИНТАКСИС
Программа динамической привязки может быть запущена как
косвенно, при запуске некоторых динамически связнных
программ или библиотек (в этом случае никаких параметров в
командной строке программе не передается, и запускается
программа, сохраненная в секции .interp), так и явно,
запуском:

/lib/ld-linux.so.* [OPTIONS] [PROGRAM [ARGUMENTS]]

ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ
--list Перечисляет все зависимости и раскрывает их.

--verify
Проверяет, является ли программа динамически
связанной и сможет ли текущая программа
динамической связки обработать ее.

--library-path PATH
Переопределяет настройки переменной окружения
LD_LIBRARY_PATH (см. ниже).

--ignore-rpath LIST
Игнорирует информацию RPATH и RUNPATH в названиях
объекта из списке LIST.

ОКРУЖЕНИЕ
LD_LIBRARY_PATH
Список каталогов, разделенных двоеточиями, в
котором нужно искать библиотеки ELF во вермя
запуска. Схоже с переменной окружения PATH.

LD_PRELOAD
Список (разделенных пробелами) пользовательских
разделяемых ELF-библиотек, которых надо загрузить
перед остальными библиотеками. Данный параметр
может использоваться для выборочного
переопределения функций в других разделяемых
библиотеках. Для бинарных ELF файлов, меняющих
идентификаторы пользователей, будут загружены
только библиотеки из системных каталогов.

LD_TRACE_LOADED_OBJECTS
Если не является пустой строкой, заставляет
программу перечислить свои динамические
библиотечные зависимости, как если бы программа
была запущена ldd.

LD_BIND_NOW
Если не является пустой строкой, заставляет
программу динамической связки расшифровать все
символы при старте программы вместо переноса вызова
функции расшифровки в пункт их первоначального
вызова.

LD_WARN
Если не является пустой строкой, то предупреждает о
неразрешимых символах.

LD_DEBUG
Выдает подробную отладочную информацию о программе
динамической привязки. Если установлено в all, то
выдает всю отладочную информацию, если установлено
в help, то выдает информационное сообщение о
возможных категориях в этой переменной окружения.

LD_DEBUG_OUTPUT
Файл, куда исходящий поток LD_DEBUG будет посылать
данные, по умолчанию - стандартный поток вывода.
LD_DEBUG_OUTPUT игнорируется для бинарных файлов,
изменяющих идентификаторы пользователей.

LD_VERBOSE
Если не является пустой строкой, то выдает
информацию о версии символов программы при запросе
информации о программе (то есть либо определено
LD_TRACE_LOADED_OBJECTS, либо параметры --list или
--verify переданы программе динамичской связки).

ФАЙЛЫ
/lib/ld-linux.so.* программа динамической
привязки/загрузки для ELF
/etc/ld.so.cache
Файл, содержащий список каталогов, по которым
производится поиск библиотек, и упорядоченный
список библиотек.
/etc/ld.so.preload
Файл, содержащий разделенный пробелами список
разделяемых ELF-библиотек для загрузки перед
программами и остальными библиотеками.
lib*.so*
разделяемые библиотеки

АВТОРЫ
Roland McGrath, Ulrich Drepper и другие. Данное
руководство взято из libc 5 ld.so.
Читать новости Linux в Telegram
Linux - ld.so, ld-linux.so* - программа динамической привязки
Мы в соцсетях ✉