ldd(1)

НАИМЕНОВАНИЕ
ldd - выдаёт список зависимостей от общих объектов

ОБЗОР
ldd [option ...] file ...

ОПИСАНИЕ
Программа 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)).

  Безопасность
Однако заметим, что при определённых условиях (например, в программе указан интерпретатор ELF не ld-linux.so) некоторые версии ldd могут попытаться получить информацию о зависимостях посредством прямого запуска программы,что может привести к выполнению какого угодно кода, указанного в интерпретаторе ELF программы и, возможно, выполнению самой программы (до glibc 2.27 так, например, поступала авторская реализация ldd, хотя в большинстве дистрибутивов содержалась изменённая версия, которая так не делала).

Поэтому никогда не запускайте ldd для недоверенных исполняемых файлов, так как это может привести к выполнению произвольного кода. Безопасной альтернативой при работе с недоверенными исполняемыми файлами является команда:

    $ objdump -p /path/to/program | grep NEEDED;

Однако заметим, что эта альтернатива показывает только непосредственные зависимости исполняемого файла, а ldd показывает всё его дерево зависимостей.

ПАРАМЕТРЫ

--version
    Выдать номер версии ldd.

--verbose
-v
    Выдать всю информацию, включая, например, информацию о версии символов.

--unused
-u
    Выдать неиспользуемые явные зависимости. (Начиная с glibc 2.3.4.)

--data-relocs
-d
    Выполнить перемещения и показать все отсутствующие объекты (только для ELF).

--function-relocs
-r
    Выполнить перемещения и для объектов данных и для функций, и показать все отсутствующие объекты или функции (только для ELF).

--help
    Выдать справку по использованию.

ОШИБКИ
ldd не работает с динамическими библиотеками в формате a.out.

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

СМОТРИТЕ ТАКЖЕ
pldd(1), sprof(1), ld.so(8), ldconfig(8)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Artyom Kunyov <artkun@guitarplayer.ru>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Сухичев Михаил Иванович <sukhichev@yandex.ru>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).