Как показать все общие библиотеки, пользовавшиеся исполняемыми файлами в Linux?

211
задан Ciro Santilli 新疆改造中心法轮功六四事件 29 November 2017 в 04:27
поделиться

3 ответа

  1. Использование ldd для списка совместно использованных библиотек для каждого исполняемого файла.
  2. Очистка вывод
  3. Вид, вычислите количества, вид количеством

Для нахождения ответа для всех исполняемых файлов в "/мусорное ведро" каталог:

find /bin -type f -perm /a+x -exec ldd {} \; \
| grep so \
| sed -e '/^[^\t]/ d' \
| sed -e 's/\t//' \
| sed -e 's/.*=..//' \
| sed -e 's/ (0.*)//' \
| sort \
| uniq -c \
| sort -n

Изменение "/мусорное ведро" выше к "/" для поиска всех каталогов.

Вывод (для просто / каталога bin) будет выглядеть примерно так:

  1 /lib64/libexpat.so.0
  1 /lib64/libgcc_s.so.1
  1 /lib64/libnsl.so.1
  1 /lib64/libpcre.so.0
  1 /lib64/libproc-3.2.7.so
  1 /usr/lib64/libbeecrypt.so.6
  1 /usr/lib64/libbz2.so.1
  1 /usr/lib64/libelf.so.1
  1 /usr/lib64/libpopt.so.0
  1 /usr/lib64/librpm-4.4.so
  1 /usr/lib64/librpmdb-4.4.so
  1 /usr/lib64/librpmio-4.4.so
  1 /usr/lib64/libsqlite3.so.0
  1 /usr/lib64/libstdc++.so.6
  1 /usr/lib64/libz.so.1
  2 /lib64/libasound.so.2
  2 /lib64/libblkid.so.1
  2 /lib64/libdevmapper.so.1.02
  2 /lib64/libpam_misc.so.0
  2 /lib64/libpam.so.0
  2 /lib64/libuuid.so.1
  3 /lib64/libaudit.so.0
  3 /lib64/libcrypt.so.1
  3 /lib64/libdbus-1.so.3
  4 /lib64/libresolv.so.2
  4 /lib64/libtermcap.so.2
  5 /lib64/libacl.so.1
  5 /lib64/libattr.so.1
  5 /lib64/libcap.so.1
  6 /lib64/librt.so.1
  7 /lib64/libm.so.6
  9 /lib64/libpthread.so.0
 13 /lib64/libselinux.so.1
 13 /lib64/libsepol.so.1
 22 /lib64/libdl.so.2
 83 /lib64/ld-linux-x86-64.so.2
 83 /lib64/libc.so.6

Редактирование - Удаленный "grep-P"

256
ответ дан Dave Jarvis 23 November 2019 в 04:32
поделиться

для изучения, что используют библиотеки двоичный файл используйте ldd

ldd path/to/the/tool

, который необходимо было бы записать небольшому сценарию оболочки для получения до разбивки в масштабе всей системы.

47
ответ дан pilif 23 November 2019 в 04:32
поделиться

С ldd можно получить библиотеки то использование инструментов. Для рейтинга использования библиотек для ряда инструмента, можно использовать что-то как следующая команда.

ldd /bin/* /usr/bin/* ... | sed -e '/^[^\t]/ d; s/^\t\(.* => \)\?\([^ ]*\) (.*/\2/g' | sort | uniq -c

(Здесь sed полосы все строки, которые не запускают с вкладки и фильтров только фактические библиотеки. С sort | uniq -c Вы получаете каждую библиотеку с количеством, указывающим на количество раз, это произошло.)

Вы могли бы хотеть добавить sort -g в конце для получения библиотек в порядке использования.

Примечание, что Вы, вероятно, получаете строки две строки небиблиотеки с вышеупомянутой командой. Один из статических исполняемых файлов ("не динамический исполняемый файл") и один без любой библиотеки. Последний является результатом linux-gate.so.1, который не является библиотекой в Вашей файловой системе, но одном "предоставленном" ядром.

4
ответ дан mweerden 23 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: