Администрирование FreeBSD, Linux, ... Как узнать зависимости для программы (какие библиотеки или модули использует программа) Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Как узнать зависимости для программы (какие библиотеки или модули использует программа) Печать
Добавил(а) microsin   

Процесс покажу на примере программы ls - мне её понадобилось вместе с библиотеками скопировать в каталог ~ftp/bin при организации анонимного доступа к ftp-серверу (см. статью Установка анонимного FTP сервера ftpd).

1. Сначала узнаем, где на диске лежит наша программа. Иногда можно воспользоваться locate, но в случае с ls это неудобно - выводится слишком большой список. Поэтому используем find:
# find / -name ls
/bin/ls
/usr/share/locale/l10n/ls
/root/temp/gcc-4.3.0/libjava/org/w3c/dom/ls
/root/temp/gcc-4.3.0/libjava/classpath/lib/org/w3c/dom/ls
/root/temp/gcc-4.3.0/libjava/classpath/lib/gnu/xml/dom/ls
/root/temp/gcc-4.3.0/libjava/classpath/external/w3c_dom/org/w3c/dom/ls
/root/temp/gcc-4.3.0/libjava/classpath/gnu/xml/dom/ls
/root/temp/gcc-4.3.0/libjava/gnu/xml/dom/ls

Отсюда понятно, что тело программы ls находится в папке /bin.

2. Узнаем, какие используются библиотеки для программы ls, и где они находятся. Для этого используем утилиту ldd:
# ldd /bin/ls
        librt.so.1 => /lib/tls/librt.so.1 (0x00bbc000)
        libacl.so.1 => /lib/libacl.so.1 (0x003b1000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00518000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00284000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x004e7000)
        /lib/ld-linux.so.2 (0x00266000)
        libattr.so.1 => /lib/libattr.so.1 (0x005b7000)

 

Комментарии  

 
0 #1 AJEV 03.02.2010 20:24
Лучше вместо: "find / -name ls", все-же использовать "whereis ls"
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page