Использовать LDD для отображения разделяемых библиотек, требуемых какой-либо конкретной программой, - полезной для разработки, когда есть недостающая зависимость. Команда также содержит список отсутствующих функций и объектов.
Командный синтаксис ldd
Соблюдайте правильный синтаксис команды ldd, чтобы избежать ошибок:
ldd OPTION … FILE …
Используйте один или несколько доступных переключателей командной строки ldd, вставленных в КЛЮЧ в приведенной выше команде: --help | распечатать эту справку и выйти --version | распечатать информацию о версии и выйти -d, --data-relocs | перераспределение данных процесса -r, --function-relocs | данные процесса и перемещение функций -u, --unused | печать неиспользуемых прямых зависимостей -v, --verbose | распечатать всю информацию Выполните следующую команду, чтобы получить дополнительную информацию о программе: $ ldd -v / path / to / program / executable
На выходе отображаются сведения о версии, а также пути и адреса для разделяемых библиотек, например: $ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Если SO-файл вообще не существует, вы можете найти недостающие библиотеки, используя следующую команду: $ ldd -d path / to / program
Результат аналогичен следующему: linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)
Никогда не запускайте команду ldd против ненадежной программы, потому что ldd может ее выполнить. Вместо этого используйте более безопасную альтернативу, которая отображает только прямые зависимости, а не все дерево зависимостей: $ objdump -p / path / to / program | НЕОБХОДИМО Вы должны указать полный путь к приложению, если хотите найти его зависимости от ldd, что вы можете сделать несколькими способами. Например, так вы найдете путь к Firefox: $ find / -name firefox
Однако проблема с командой find заключается в том, что она будет не только перечислять исполняемый файл, но и везде, где расположен Firefox, например: Этот подход немного перегружен, и вам может понадобиться использовать команду sudo для повышения ваших привилегий, иначе вы, вероятно, получите много ошибок, связанных с разрешением. Вместо этого гораздо проще использовать команду whereis для поиска пути приложения: $ whereis firefox
На этот раз вывод может выглядеть так: / USR / бен / светлячок / И т.д. / светлячок / USR / Библиотека / светлячок Все, что вам нужно сделать, чтобы найти общие библиотеки для Firefox, введите следующую команду: $ ldd / usr / bin / firefox
Результат команды будет примерно таким: linux-vdso.so.1 (0x00007ffff8364000)libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000) Linux-vdso.so.1 - это имя библиотеки, а шестнадцатеричный номер - это адрес, в который будет загружаться библиотека в память. Вы заметите на многих других строках, что за символом => следует путь. Это путь к физическому двоичному; шестнадцатеричный номер - это адрес, в который будет загружена библиотека. Как использовать команду ldd
Как найти путь к приложению




