Linux ldd команда может показать динамические библиотеки, пользовавшиеся исполняемым файлом. Это - сценарий удара. Но это, кажется, хрупко, и не работает над некоторыми двоичными файлами. Существует ли альтернативный инструмент?
В моем определенном примере я могу использовать:
% файл datab2txt
datab2txt: ELF 64-разрядный исполняемый файл LSB, x86-64, версия 1 (SYSV), статически связанный, для GNU/Linux 2.4.0, не разделенный
но ldd перестал работать с:
% ldd-v datab2txt
не динамический исполняемый файл
Вы могли также сделать:
readelf -d executable | grep NEEDED
Но это, вероятно, не делает то, что Вы хотите. Это показывает освобождение этого executable
ссылки на, но не все освобождение его нуждается (библиотека может потребовать другой библиотеки).
Вывод file
говорит "статически связанный". ldd
только работы над динамично связанными исполняемыми файлами.
(Технически, весь Linux ldd
делает, вызывают исполнимый загрузчик Linux, /lib/ld-linux.so.2
, после установки переменной среды. Таким образом, это должен быть самый надежный путь.)
Некоторые программы могли бы использовать dlopen()
для загрузки библиотек, чтобы не делать программу трудно - зависят от них. Например, Glibc загружает библиотеки NSS тот путь, потому что их имена только известны во время выполнения, не время компиляции/соединения.