Как узнать какие библиотеки использует программа linux

Существует несколько способов узнать, какие библиотеки использует программа в Linux:

Команда ldd выводит список всех динамических библиотек, используемых программой.

Например, для проверки библиотек, используемых программой Firefox, выполните следующие команды:

$ which firefox /usr/bin/firefox $ ldd /usr/bin/firefox

2. Команда strace

Команда strace позволяет отслеживать системные вызовы, которые делает программа. В выводе strace можно увидеть, какие библиотеки программа загружает.

Например, для отслеживания использования библиотек Firefox выполните следующие команды:

$ which firefox /usr/bin/firefox $ strace -e open firefox

Команда lsof может использоваться для отображения списка всех открытых файлов, включая библиотеки, загружаемые программой.

Например, для получения списка используемых библиотек Firefox выполните следующие команды:

$ which firefox /usr/bin/firefox $ lsof -p $(pidof firefox) | grep «.so»

Похожие записи:

  1. Как узнать список библиотек, которые используются программой(бинарём)?Какие библиотеки использует программа?
  2. Как узнать, как много памяти использует программа в C/C++?
  3. java: как узнать, сколько памяти использует программа?
  4. Почему не работает программа ? Данная программа предназначена для вывода значений уровня владения иностранным языком на консоль с помощью Enum
  5. Как узнать, какой процесс использует порт на Linux?

Источник: qaa-engineer.ru

Как заставить любую программу выполнять ваш код | Инъекция разделяемых библиотек | Linux LD_PRELOAD

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

Я хотел бы знать, какие библиотеки используются исполняемыми файлами в моей системе. В частности, я хотел бы ранжировать, какие библиотеки используются больше всего, вместе с исполняемыми файлами, которые их используют. Как я могу это сделать?

Alan Szlosek 08 сен. 2008, в 16:04
Поделиться
Вы, вероятно, не сможете получить точное число, если исполняемые файлы используют dlopen .
jxh 02 фев. 2018, в 19:16

Поделиться:
shared-libraries

11 ответов

Лучший ответ

  • Используйте ldd для отображения разделяемых библиотек для каждого исполняемого файла.
  • Очистка вывода
  • Сортировка, подсчет, сортировка по счету

Чтобы найти ответ для всех исполняемых файлов в каталоге «/bin»:

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» выше на «/», чтобы найти все каталоги.

Выход (только для каталога /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»

Комплексные инструменты OSINT. Сбор информации в сети

John Vasileff 08 сен. 2008, в 18:45
Поделиться

Это отличный ответ (я проголосовал за него), но можете ли вы объяснить команду «grep -P ‘ t. * So'»? Согласно man, это интерпретирует шаблон как регулярное выражение perl, но моя версия grep не поддерживает его (man указывает, что это общая проблема). Какой бит регулярного выражения специфичен для perl?

Bobby Jack 08 сен. 2008, в 17:36
Я думаю, вам может понадобиться использовать ldd -v
MountainX 25 апр. 2012, в 03:30

Имейте в виду, что ldd фактически запускает исполняемый файл со специальной переменной среды, и динамический компоновщик Linux распознает этот флаг и просто выводит библиотеки, а не запускает исполняемый файл. Посмотрите на источник, чтобы ldd ; в моей системе это скрипт bash. Если исполняемый файл статически связан и использует системные вызовы и указывает другой загрузчик, он может совершать произвольные злые действия. Поэтому не используйте ldd для исполняемого файла, которому вы не доверяете.

Barry Kelly 25 сен. 2013, в 15:26
Показать ещё 1 комментарий

У меня не было ldd на моей инструментальной привязке ARM, поэтому я использовал objdump:

$(CROSS_COMPILE) objdump -p

objdump -p /usr/bin/python: Dynamic Section: NEEDED libpthread.so.0 NEEDED libdl.so.2 NEEDED libutil.so.1 NEEDED libssl.so.1.0.0 NEEDED libcrypto.so.1.0.0 NEEDED libz.so.1 NEEDED libm.so.6 NEEDED libc.so.6 INIT 0x0000000000416a98 FINI 0x000000000053c058 GNU_HASH 0x0000000000400298 STRTAB 0x000000000040c858 SYMTAB 0x0000000000402aa8 STRSZ 0x0000000000006cdb SYMENT 0x0000000000000018 DEBUG 0x0000000000000000 PLTGOT 0x0000000000832fe8 PLTRELSZ 0x0000000000002688 PLTREL 0x0000000000000007 JMPREL 0x0000000000414410 RELA 0x0000000000414398 RELASZ 0x0000000000000078 RELAENT 0x0000000000000018 VERNEED 0x0000000000414258 VERNEEDNUM 0x0000000000000008 VERSYM 0x0000000000413534
smichak 20 март 2013, в 11:23
Поделиться

Читайте также:
Самая простая программа для сжатия видео

Это также должно быть безопасно, в отличие от ldd который не должен использоваться на ненадежных исполняемых файлах.

PSkocik 02 сен. 2017, в 18:16

Кроме того, obbjdump -p показывает дополнительную информацию, такую как RPATH , которая может быть RPATH при исследовании проблем динамического связывания с вашим исполняемым файлом.

sitaktif 04 окт. 2018, в 10:27

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

ldd path/to/the/tool

Вам нужно написать небольшую оболочку script, чтобы получить разбивку по всей системе.

pilif 08 сен. 2008, в 18:05
Поделиться

В Linux я использую:

lsof -P -T -p Application_PID

Это работает лучше, чем ldd , когда исполняемый файл использует нестандартный загрузчик

Fabiano Tarlao 18 нояб. 2011, в 01:48
Поделиться

Используйте это, чтобы выяснить, действительно ли mariadb использует tc-malloc , который загружается LD_PRELOAD. Работает отлично.

cmc 25 фев. 2013, в 16:33

Я искал что-то, что показывало бы мне «.so» для данного pid. Это именно то, что мне было нужно. Спасибо!

Leo Ufimtsev 11 авг. 2017, в 20:27

Проверка зависимостей общей библиотеки исполняемого файла

Чтобы узнать, от каких библиотек зависит конкретный исполняемый файл, вы можете использовать команду ldd. Эта команда вызывает динамический компоновщик для поиска зависимостей библиотек от исполняемого файла.

$ldd/path/to/program

Обратите внимание, что НЕ рекомендуется запускать ldd с любым ненадежным сторонним исполняемым файлом, поскольку некоторые версии ldd могут напрямую вызывать исполняемый файл для идентификации его зависимостей в библиотеке, что может представлять угрозу безопасности.

Вместо этого более безопасный способ отображения зависимостей библиотеки неизвестного двоичного файла приложения заключается в использовании следующей команды.

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

kayle 24 апр. 2015, в 06:31
Поделиться
objdump хороший и спасибо за это. +1
Leo Prince 16 июнь 2015, в 16:27

В OS X по умолчанию нет ldd , objdump или lsof . В качестве альтернативы попробуйте otool -L :

$ otool -L `which openssl` /usr/bin/openssl: /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

В этом примере использование which openssl заполняет полный путь для данной исполняемой и текущей пользовательской среды.

bluebadge 27 янв. 2015, в 00:42
Поделиться
Конечно, на OS X есть lsof
Max Ried 05 май 2016, в 12:58

В системе UNIX предположим, что двоичное (исполняемое) имя является тестом. Затем мы используем следующую команду для отображения библиотек, используемых в тесте,

ldd test
Raghwendra 20 апр. 2011, в 09:18
Поделиться

readelf -d рекурсия

Но будьте осторожны с тем, что динамические библиотеки могут зависеть от других динамических библиотек, вам приходится рекурсивно.

readelf -d /bin/ls | grep ‘NEEDED’
0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1] 0x0000000000000001 (NEEDED) Shared library: [libacl.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
$ locate libselinux.so.1 /lib/i386-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /mnt/debootstrap/lib/x86_64-linux-gnu/libselinux.so.1

Выберите один и повторите:

readelf -d /lib/x86_64-linux-gnu/libselinux.so.1 | grep ‘NEEDED’
0x0000000000000001 (NEEDED) Shared library: [libpcre.so.3] 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]

/proc//maps для запуска процессов

Это полезно для поиска всех библиотек, которые в настоящее время используются при запуске исполняемых файлов. Например:.

sudo awk ‘/.so/’ /proc/1/maps | sort -u

показывает все загруженные в данный момент динамические зависимости init (PID 1 ):

/lib/x86_64-linux-gnu/ld-2.23.so /lib/x86_64-linux-gnu/libapparmor.so.1.4.0 /lib/x86_64-linux-gnu/libaudit.so.1.0.0 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 /lib/x86_64-linux-gnu/libc-2.23.so /lib/x86_64-linux-gnu/libcap.so.2.24 /lib/x86_64-linux-gnu/libdl-2.23.so /lib/x86_64-linux-gnu/libkmod.so.2.3.0 /lib/x86_64-linux-gnu/libmount.so.1.1.0 /lib/x86_64-linux-gnu/libpam.so.0.83.1 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 /lib/x86_64-linux-gnu/libpthread-2.23.so /lib/x86_64-linux-gnu/librt-2.23.so /lib/x86_64-linux-gnu/libseccomp.so.2.2.3 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
Ciro Santilli 新疆改造中心 六四事件 法轮功 26 март 2017, в 09:23
Поделиться

С помощью 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 , который не является библиотекой в ​​вашей файловой системе, а один «предоставляется» ядром.

Читайте также:
В какой программе есть счет фактура

mweerden 08 сен. 2008, в 17:42
Поделиться

на ubuntu печать пакетов, связанных с исполняемым файлом

ldd executable_name | awk » | xargs dpkg -S | awk -F «:» »

Shimon Doodkin 04 апр. 2017, в 14:37
Поделиться

Я нашел этот пост очень полезным, поскольку мне нужно было исследовать зависимости от сторонней поставляемой библиотеки (32 или 64-битные пути выполнения).

Я собрал Q #Use ‘readelf -d’ to find dependencies dependencies=$(readelf -d $| grep NEEDED | awk ‘< print $5 >’ | tr -d ‘[]’) for d in $dependencies; do echo «$$» nm=$ #libstdc++ hack for the ‘+’-s nm1=$ # /lib /lib64 /usr/lib and /usr/lib are searched children=$(locate $ | grep -E «(^/(lib|lib64|usr/lib|usr/lib64)/$)») rc=$? #at least locate. didn’t fail if [ $ == «0» ] ; then #we have at least one dependency if [ $ -gt 0 ]; then #check the dependeny dependencies for c in $children; do recurse » $» $ done else echo «$no children found» fi else echo «$locate failed for $» fi done > # Q» !!full path to library you want to investigate!!

перенаправить вывод в файл и grep для ‘found’ или ‘failed’

Используйте и модифицируйте, на свой страх и риск, по своему усмотрению.

Источник: overcoder.net

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

Я хотел бы знать, какие библиотеки используются исполняемыми файлами в моей системе. В частности, я хотел бы ранжировать, какие библиотеки используются больше всего, вместе с исполняемыми файлами, которые их используют. Как я могу это сделать?

ОТВЕТЫ

Ответ 1

  • Используйте ldd для отображения разделяемых библиотек для каждого исполняемого файла.
  • Очистка вывода
  • Сортировка, подсчет, сортировка по счету

Чтобы найти ответ для всех исполняемых файлов в каталоге «/bin»:

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» выше на «/», чтобы найти все каталоги.

Выход (только для каталога /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»

Ответ 2

У меня не было ldd на моей инструментальной привязке ARM, поэтому я использовал objdump:

$(CROSS_COMPILE) objdump -p

objdump -p /usr/bin/python: Dynamic Section: NEEDED libpthread.so.0 NEEDED libdl.so.2 NEEDED libutil.so.1 NEEDED libssl.so.1.0.0 NEEDED libcrypto.so.1.0.0 NEEDED libz.so.1 NEEDED libm.so.6 NEEDED libc.so.6 INIT 0x0000000000416a98 FINI 0x000000000053c058 GNU_HASH 0x0000000000400298 STRTAB 0x000000000040c858 SYMTAB 0x0000000000402aa8 STRSZ 0x0000000000006cdb SYMENT 0x0000000000000018 DEBUG 0x0000000000000000 PLTGOT 0x0000000000832fe8 PLTRELSZ 0x0000000000002688 PLTREL 0x0000000000000007 JMPREL 0x0000000000414410 RELA 0x0000000000414398 RELASZ 0x0000000000000078 RELAENT 0x0000000000000018 VERNEED 0x0000000000414258 VERNEEDNUM 0x0000000000000008 VERSYM 0x0000000000413534

Ответ 3

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

ldd path/to/the/tool

Вам нужно написать небольшую оболочку script, чтобы получить разбивку по всей системе.

Ответ 4

В Linux я использую:

lsof -P -T -p Application_PID

Это работает лучше, чем ldd , когда исполняемый файл использует нестандартный загрузчик

Ответ 5

Проверка зависимостей общей библиотеки исполняемого файла

Чтобы узнать, от каких библиотек зависит конкретный исполняемый файл, вы можете использовать команду ldd. Эта команда вызывает динамический компоновщик для поиска зависимостей библиотек от исполняемого файла.

$ldd/path/to/program

Обратите внимание, что НЕ рекомендуется запускать ldd с любым ненадежным сторонним исполняемым файлом, поскольку некоторые версии ldd могут напрямую вызывать исполняемый файл для идентификации его зависимостей в библиотеке, что может представлять угрозу безопасности.

Вместо этого более безопасный способ отображения зависимостей библиотеки неизвестного двоичного файла приложения заключается в использовании следующей команды.

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

Ответ 6

readelf -d рекурсия

redelf -d производит вывод, аналогичный objdump -p , который был упомянут в: fooobar.com/questions/40264/.

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

readelf -d /bin/ls | grep ‘NEEDED’
0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1] 0x0000000000000001 (NEEDED) Shared library: [libacl.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
$ locate libselinux.so.1 /lib/i386-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /mnt/debootstrap/lib/x86_64-linux-gnu/libselinux.so.1

Читайте также:
Как называется программа которая оживляет фотографии

Выберите один и повторите:

readelf -d /lib/x86_64-linux-gnu/libselinux.so.1 | grep ‘NEEDED’
0x0000000000000001 (NEEDED) Shared library: [libpcre.so.3] 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]

/proc//maps для запуска процессов

Это полезно, чтобы найти все библиотеки, которые в данный момент используются исполняемыми файлами. Например.:

sudo awk ‘/.so/’ /proc/1/maps | sort -u

показывает все загруженные в настоящий момент динамические зависимости init (PID 1 ):

/lib/x86_64-linux-gnu/ld-2.23.so /lib/x86_64-linux-gnu/libapparmor.so.1.4.0 /lib/x86_64-linux-gnu/libaudit.so.1.0.0 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 /lib/x86_64-linux-gnu/libc-2.23.so /lib/x86_64-linux-gnu/libcap.so.2.24 /lib/x86_64-linux-gnu/libdl-2.23.so /lib/x86_64-linux-gnu/libkmod.so.2.3.0 /lib/x86_64-linux-gnu/libmount.so.1.1.0 /lib/x86_64-linux-gnu/libpam.so.0.83.1 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 /lib/x86_64-linux-gnu/libpthread-2.23.so /lib/x86_64-linux-gnu/librt-2.23.so /lib/x86_64-linux-gnu/libseccomp.so.2.2.3 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libuuid.so.1.3.0

Этот метод также показывает библиотеки, открытые с помощью dlopen , протестированные с помощью этой минимальной настройки, взломанные с помощью sleep(1000) в Ubuntu 18.04.

Ответ 7

В OS X по умолчанию нет ldd , objdump или lsof . В качестве альтернативы попробуйте otool -L :

$ otool -L `which openssl` /usr/bin/openssl: /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

В этом примере использование which openssl заполняет полный путь для данной исполняемой и текущей пользовательской среды.

Ответ 8

В системе UNIX предположим, что двоичное (исполняемое) имя является тестом. Затем мы используем следующую команду для отображения библиотек, используемых в тесте,

ldd test

Ответ 9

С помощью 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 , который не является библиотекой в ​​вашей файловой системе, а один «предоставляется» ядром.

Ответ 10

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

ldd executable_name|awk »|xargs dpkg -S |awk -F «:» »

Ответ 11

Еще один вариант можно просто прочитать файл, расположенный в

/proc//maps

Например, если идентификатор процесса — 2601, тогда команда —

cat /proc/2601/maps

И вывод похож на

7fb37a8f2000-7fb37a8f4000 r-xp 00000000 08:06 4065647 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/network_networkmanager.so 7fb37a8f4000-7fb37aaf3000 —p 00002000 08:06 4065647 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/network_networkmanager.so 7fb37aaf3000-7fb37aaf4000 r—p 00001000 08:06 4065647 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/network_networkmanager.so 7fb37aaf4000-7fb37aaf5000 rw-p 00002000 08:06 4065647 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/network_networkmanager.so 7fb37aaf5000-7fb37aafe000 r-xp 00000000 08:06 4065646 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/config_gnome3.so 7fb37aafe000-7fb37acfd000 —p 00009000 08:06 4065646 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/config_gnome3.so 7fb37acfd000-7fb37acfe000 r—p 00008000 08:06 4065646 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/config_gnome3.so 7fb37acfe000-7fb37acff000 rw-p 00009000 08:06 4065646 /usr/lib/x86_64-linux-gnu/libproxy/0.4.15/modules/config_gnome3.so 7fb37acff000-7fb37ad1d000 r-xp 00000000 08:06 3416761 /usr/lib/x86_64-linux-gnu/libproxy.so.1.0.0 7fb37ad1d000-7fb37af1d000 —p 0001e000 08:06 3416761 /usr/lib/x86_64-linux-gnu/libproxy.so.1.0.0 7fb37af1d000-7fb37af1e000 r—p 0001e000 08:06 3416761 /usr/lib/x86_64-linux-gnu/libproxy.so.1.0.0 7fb37af1e000-7fb37af1f000 rw-p 0001f000 08:06 3416761 /usr/lib/x86_64-linux-gnu/libproxy.so.1.0.0 7fb37af1f000-7fb37af21000 r-xp 00000000 08:06 4065186 /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so 7fb37af21000-7fb37b121000 —p 00002000 08:06 4065186 /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so 7fb37b121000-7fb37b122000 r—p 00002000 08:06 4065186 /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so 7fb37b122000-7fb37b123000 rw-p 00003000 08:06 4065186 /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so

Ответ 12

Я нашел этот пост очень полезным, поскольку мне нужно было исследовать зависимости от сторонней поставляемой библиотеки (32 или 64-битные пути выполнения).

Я собрал Q #Use ‘readelf -d’ to find dependencies dependencies=$(readelf -d $| grep NEEDED | awk ‘< print $5 >’ | tr -d ‘[]’) for d in $dependencies; do echo «$$» nm=$ #libstdc++ hack for the ‘+’-s nm1=$ # /lib /lib64 /usr/lib and /usr/lib are searched children=$(locate $ | grep -E «(^/(lib|lib64|usr/lib|usr/lib64)/$)») rc=$? #at least locate. didn’t fail if [ $ == «0» ] ; then #we have at least one dependency if [ $ -gt 0 ]; then #check the dependeny dependencies for c in $children; do recurse » $» $ done else echo «$no children found» fi else echo «$locate failed for $» fi done > # Q» !!full path to library you want to investigate!!

перенаправить вывод в файл и grep для ‘found’ или ‘failed’

Используйте и модифицируйте, на свой страх и риск, по своему усмотрению.

Источник: utyatnishna.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru