ld.so

LD.SO(8)                   Linux Programmer's Manual                  LD.SO(8)



ÐÐЯ
       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)