Инструменты пользователя

Инструменты сайта


linux:libs:ldd

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

linux:libs:ldd [2023/11/12 12:01]
werwolf создано
linux:libs:ldd [2023/11/12 12:09] (текущий)
werwolf
Строка 12: Строка 12:
  
 === ОПИСАНИЕ === === ОПИСАНИЕ ===
 +Программа **ldd** выдаёт список общих объектов (общих библиотек),​ которые требуются для каждой из заданных в командной строке ​ программы ​ или ​ общего ​ объекта. ​ Пример ​ использования ​ и результат работы:​
 <code bash> <code bash>
  
 +$ ldd /bin/ls
 +    linux-vdso.so.1 (0x00007ffcc3563000)
 +    libselinux.so.1 => /​lib64/​libselinux.so.1 (0x00007f87e5459000)
 +    libcap.so.2 => /​lib64/​libcap.so.2 (0x00007f87e5254000)
 +    libc.so.6 => /​lib64/​libc.so.6 (0x00007f87e4e92000)
 +    libpcre.so.1 => /​lib64/​libpcre.so.1 (0x00007f87e4c22000)
 +    libdl.so.2 => /​lib64/​libdl.so.2 (0x00007f87e4a1e000)
 +    /​lib64/​ld-linux-x86-64.so.2 (0x00005574bf12e000)
 +    libattr.so.1 => /​lib64/​libattr.so.1 (0x00007f87e4817000)
 +    libpthread.so.0 => /​lib64/​libpthread.so.0 (0x00007f87e45fa000)
 +</​code>​
  
-           ​$ ​ldd /bin/ls +Обычно, ​ **ldd**  вызывает стандартный динамический компоновщик (смотрите ld.so(8)), установив значение переменной окружения **LD_TRACE_LOADED_OBJECTS** ​ в  ​1.  ​Это ​ заставляет ​ компоновщик просмотреть ​ динамические ​ зависимости ​ программы ​ и найти ​(согласно правилам,​ описанным в **ld.so**(8)) и загрузить объекты,​ удовлетворяющие этим зависимостямДля ​ каждой ​ зависимости **ldd** ​ показывает ​ расположение ​ подошедшего ​ объекта ​ и  адрес ​(шестнадцатеричныйзагрузки ​(общие зависимости ​ **linux-vdso** ​ и  **ld-linux**  являются ​ специальными; ​ смотрите ​ **vdso**(7 и **ld.so**(8)).
-               ​linux-vdso.so.1 (0x00007ffcc3563000) +
-               ​libselinux.so.=> /​lib64/​libselinux.so.1 (0x00007f87e5459000) +
-               ​libcap.so.2 => /​lib64/​libcap.so.2 ​(0x00007f87e5254000) +
-               ​libc.so.6 => /​lib64/​libc.so.6 (0x00007f87e4e92000) +
-               ​libpcre.so.1 => /​lib64/​libpcre.so.1 ​(0x00007f87e4c22000) +
-               ​libdl.so.2 => /​lib64/​libdl.so.2 ​(0x00007f87e4a1e000) +
-               /​lib64/​ld-linux-x86-64.so.2 ​(0x00005574bf12e000) +
-               ​libattr.so.1 => /​lib64/​libattr.so.1 ​(0x00007f87e4817000) +
-               ​libpthread.so.0 => /​lib64/​libpthread.so.0 (0x00007f87e45fa000)+
  
-       ​Обычно, ​ ldd  вызывает стандартный динамический компоновщик (смотрите ld.so(8)), установив +=== Безопасность ​===
-       значение переменной окружения LD_TRACE_LOADED_OBJECTS ​ в  1.  Это ​ заставляет ​ компоновщик +
-       ​просмотреть ​ динамические ​ зависимости ​ программы ​ и найти (согласно правилам,​ описанным в +
-       ​ld.so(8)) и загрузить объекты,​ удовлетворяющие этим зависимостям. Для ​ каждой ​ зависимости +
-       ​ldd ​ показывает ​ расположение ​ подошедшего ​ объекта ​ и  адрес (шестнадцатеричный) загрузки +
-       ​(общие зависимости ​ linux-vdso ​ и  ld-linux ​ являются ​ специальными; ​ смотрите ​ vdso(7) ​ и +
-       ​ld.so(8)).+
  
-   ​Безопасность +<​note>​ 
-       ​Be  aware that in some circumstances (e.g., where the program specifies an ELF interpreter +Be  aware that in some circumstances (e.g., where the program specifies an ELF interpreter other than ld-linux.so),​ some versions ​ of  ldd  may  attempt ​ to  obtain ​ the  dependency information by attempting to directly execute the program, which may lead to the execution of whatever code is defined in the program'​s ELF interpreter,​ and perhaps to execution ​ of the  program ​ itself. ​  ​(Before ​ glibc  2.27, the upstream ldd implementation did this for example, although most distributions provided a modified version that did not.) 
-       other than ld-linux.so),​ some versions ​ of  ldd  may  attempt ​ to  obtain ​ the  dependency +</​note>​
-       information by attempting to directly execute the program, which may lead to the execution +
-       of whatever code is defined in the program'​s ELF interpreter,​ and perhaps to execution ​ of +
-       the  program ​ itself. ​  ​(Before ​ glibc  2.27, the upstream ldd implementation did this for +
-       example, although most distributions provided a modified version that did not.)+
  
-       Поэтому никогда не запускайте ldd для недоверенных исполняемых файлов,​ так как ​ это ​ может +Поэтому никогда не запускайте ​**ldd** для не доверенных исполняемых файлов,​ так как ​ это ​ может привести ​  ​к ​  ​выполнению ​ произвольного ​ кода. ​ Безопасной ​ альтернативой ​ при ​ работе ​ с не доверенными исполняемыми файлами является команда:​
-       привести ​  ​к ​  ​выполнению ​ произвольного ​ кода. ​ Безопасной ​ альтернативой ​ при ​ работе ​ с +
-       недоверенными исполняемыми файлами является команда:​+
  
-           $ objdump -p /​путь/​к/​программе | grep NEEDED +<code bash> 
- +$ objdump -p /​путь/​к/​программе | grep NEEDED
-       ​Однако заметим, ​ что ​ эта ​ альтернатива ​ показывает ​ только ​ непосредственные ​ зависимости +
-       ​исполняемого файла, а ldd показывает всё его дерево зависимостей.+
 </​code>​ </​code>​
 +
 +Однако заметим, ​ что ​ эта ​ альтернатива ​ показывает ​ только ​ непосредственные ​ зависимости исполняемого файла, а **ldd** показывает всё его дерево зависимостей.
  
 === ПАРАМЕТРЫ === === ПАРАМЕТРЫ ===
linux/libs/ldd.1699779710.txt.gz · Последние изменения: 2023/11/12 12:01 — werwolf