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

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


linux:libs:ldd

Это старая версия документа!


ldd

       ldd - выдаёт список зависимостей от общих объектов

СИНТАКСИС

       ldd [параметр]… файл…

ОПИСАНИЕ

 
           $ 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)
 
       Обычно,  ldd  вызывает стандартный динамический компоновщик (смотрите ld.so(8)), установив
       значение переменной окружения LD_TRACE_LOADED_OBJECTS  в  1.  Это  заставляет  компоновщик
       просмотреть  динамические  зависимости  программы  и найти (согласно правилам, описанным в
       ld.so(8)) и загрузить объекты, удовлетворяющие этим зависимостям. Для  каждой  зависимости
       ldd  показывает  расположение  подошедшего  объекта  и  адрес (шестнадцатеричный) загрузки
       (общие зависимости  linux-vdso  и  ld-linux  являются  специальными;  смотрите  vdso(7)  и
       ld.so(8)).
 
   Безопасность
       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.)
 
       Поэтому никогда не запускайте ldd для недоверенных исполняемых файлов, так как  это  может
       привести   к   выполнению  произвольного  кода.  Безопасной  альтернативой  при  работе  с
       недоверенными исполняемыми файлами является команда:
 
           $ objdump -p /путь/к/программе | grep NEEDED
 
       Однако заметим,  что  эта  альтернатива  показывает  только  непосредственные  зависимости
       исполняемого файла, а ldd показывает всё его дерево зависимостей.

ПАРАМЕТРЫ

       --version
              Выдать номер версии ldd.
 
       -v, --verbose
              Выдать всю информацию, включая, например, информацию о версии символов.
 
       -u, --unused
              Выдать неиспользуемые явные зависимости. (Начиная с glibc 2.3.4.)
 
       -d, --data-relocs
              Выполнить перемещения и показать все отсутствующие объекты (только для ELF).
 
       -r, --function-relocs
              Выполнить  перемещения  и  для  объектов  данных  и  для  функций,  и  показать все
              отсутствующие объекты или функции (только для ELF).
 
       --help Выдать справку по использованию.

ДЕФЕКТЫ

       ldd не работает с динамическими библиотеками в формате a.out.
 
       ldd не работает с некоторыми очень старыми a.out программами, которые были  скомпилированы
       до  добавления  поддержки  ldd  в  компиляторы. Если вы используете ldd для одной из таких
       программ, то будет предпринята попытка выполнить программу с argc = 0, и результаты  будут
       непредсказуемы.

СМ. ТАКЖЕ

       pldd(1), sprof(1), ld.so(8), ldconfig(8)
linux/libs/ldd.1699779710.txt.gz · Последние изменения: 2023/11/12 12:01 — werwolf