Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Это старая версия документа!
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)