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)