Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       ld.so, ld-linux.so* - динамический связыватель/загрузчик

ОБЗОР

       Программы   ld.so   и   ld-linux.so*   ищут  и  загружают  динамические
       библиотеки, необходимые программам, а также подготавливают программы  к
       запуску и запускают их.

       Бинарные  файлы  Linux  требуют  динамического связывания (связывания в
       момент запуска) за  исключением  тех,  что  во  время  компиляции  были
       собраны с опцией -static заданной для ld .

       Программа  ld.so  управляет  бинарными файлами в формате a.out, который
       используется очень давно; программа ld-linux.so*  управляет  файлами  в
       формате  ELF  (/lib/ld-linux.so.1  для  libc5,  /lib/ld-linux.so.2  для
       glibc2), который используется в  течении  нескольких  лет  и  в  данный
       момент.  Обе  программы  ведут  себя одинаково и используют те же самые
       файлы   поддержки,   а   также   программы   ldd(1),   ldconfig(8)    и
       /etc/ld.so.conf.

       Динамические  библиотеки,  необходимые  программе  ищутся  в нескольких
       местах:

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

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

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

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

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

ОБЗОР

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

       /lib/ld-linux.so.*  [ОПЦИИ] [ПРОГРАММА [АРГУМЕНТЫ]]

ОПЦИИ КОМАНДНОЙ СТРОКИ

       --list Выдать список всех зависимостей и как они удовлетворяются.

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

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

       --ignore-rpath LIST
              Игнорировать информацию в RPATH и RUNPATH  в  именах  объетов  в
              LIST.   Данная  опция  поддерживалась glibc2 буквально один час.
              Затем она была переименована в:

       --inhibit-rpath LIST

ОКРУЖЕНИЕ

       Существует четыре важные переменные окружения.

       LD_LIBRARY_PATH
              Список разделённых двоеточием каталогов, в которых  производится
              поиск  ELF  библиотек в момент выполнения.  Похоже на переменную
              окружения PATH .

       LD_PRELOAD
              Заданный пользователем список  дополнительных  динамических  ELF
              библиотек,  разделённых пробелами, которые будут загружены перед
              всеми  другими.   Это   можно   использовать   для   выборочного
              перекрытия   функций  в  других  динамических  библиотеках.  Для
              бинарных файлов setuid/setgid, будут загружены только библиотеки
              в стандартных каталогах поиска и которые также имеют setuid.

       LD_BIND_NOW
              (libc5;  glibc с версии 2.1.1) Если переменная содержит непустую
              строку, то компановщик будет искать все  символы  в  запускаемой
              программе,  вместо того, чтобы отложить поиск вызовов функций до
              момента,  когда  они  встретятся  в  первый  раз.   Это  полезно
              использовать при отладке.

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

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

       LD_WARN
              (только для ELF)(glibc с версии 2.1.3) Если переменная  содержит
              непустую  строку,  будут  выданы  предупреждения  о  ненайденных
              символах.

       LD_NOWARN
              (только a.out)(libc5) Подавлять  предупреждения  о  бибилиотеках
              a.out с несовместимыми номерами версий.

       LD_BIND_NOT
              (glibc начиная с 2.1.95) Не обновлять GOT (global offset table -
              глобальную таблицу смещений) и PLT (procedure  linkage  table  -
              таблицу процедурных связываний) после нахождения символа.

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

       LD_DEBUG_OUTPUT
              (glibc  начиная  с  2.1)  Файл  куда  будет  записываться  вывод
              LD_DEBUG : по умолчанию это стандартный  вывод.  LD_DEBUG_OUTPUT
              игнорируется для бинарных файлов setuid/setgid.

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

       LD_PROFILE
              (glibc начиная с 2.1) Динамический объект для профилирования.

       LD_PROFILE_OUTPUT
              (glibc  начиная  с  2.1)  Файл, куда будет сохраняться вывод для
              LD_PROFILE   :   по    умолчанию    это    стандартный    вывод.
              LD_DEBUG_OUTPUT  игнорируется для бинарных файлов setuid/setgid.

       LD_AOUT_LIBRARY_PATH
              (libc5)  Версия  LD_LIBRARY_PATH  только  для  бинарных   файлов
              формата  a.out.   Старые версии ld-linux.so.1 также поддерживают
              LD_ELF_LIBRARY_PATH.

       LD_AOUT_PRELOAD
              (libc5) Версия LD_PRELOAD только  для  бинарных  файлов  формата
              a.out.    Старые   версии   ld-linux.so.1   также   поддерживают
              LD_ELF_PRELOAD.

       LD_SHOW_AUXV
              (glibc  начиная  с  2.1)  Показывать   вспомогательный   массив,
              передаваемый из ядра.

       LD_HWCAP_MASK
              (glibc  начиная  2.1)  Маска  для  совместимости  с  аппаратными
              возможностями.

       LD_ORIGIN_PATH
              (glibc  начиная  2.1)  Путь,  где  находится   библиотека   (для
              не-setuid программ).

       LD_DYNAMIC_WEAK
              (glibc  начиная  с  2.1.91) Разрешает перекрытие слабых символов
              (возвращая к поведению старой glibc).

       LD_KEEPDIR
              (только для a.out)(libc5) Не игнорировать каталог для загрузки в
              именах  a.out  библиотек.   Использование  этой  опции  очень не
              рекомендуется.

       LDD_ARGV0
              (libc5) argv[0] для использования ldd(1), когда он не задан.

ФАЙЛЫ

       /lib/ld.so
              динамический связыватель/загрузчик для формата a.out
       /lib/ld-linux.so.{1,2}
              динамический связыватель/загрузчик для формата ELF
       /etc/ld.so.cache
              Файл, содержащий скомпилированный список  каталогов,  в  которых
              производится    поиск    библиотек    и   сортированный   список
              библиотек-кандидатов.
       /etc/ld.so.preload
              Файл, содержащий список разделённых пробелами  динамических  ELF
              библиотек, которые будут загружены перед программой.
       lib*.so*
              динамические библиотеки

ЗАМЕЧАНИЯ

       Функциональность    ld.so    доступна    для    исполняемых   программ,
       скомпилированных  с  использованием  libc  версии   4.4.3   или   выше.
       Функциональность ELF доступна начиная с Linux 1.1.52 и libc5.

СМОТРИ ТАКЖЕ

       ldd(1), ldconfig(8)

ПЕРЕВОД

       Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003

                                  2001-12-16                          LD.SO(8)