Способ программирования списка зависимостей разделяемой библиотеки от Linux - PullRequest
7 голосов
/ 12 июля 2011

Есть ли какой-нибудь способ программирования (системный вызов?) Для отображения зависимости разделяемой библиотеки от Linux? Вместо использования ldd ...

Ответы [ 4 ]

4 голосов
/ 12 июля 2011
readelf -Wa lib.so|grep NEEDED
1 голос
/ 21 апреля 2013

В Gentoo Linux есть lddtree.sh http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-projects/pax-utils/lddtree.sh?revision=1.22&content-type=text%2Fplain

Вы можете найти это полезным.

0 голосов
/ 25 января 2012

Это простой bash-скрипт, который я использую для себя в Fedora, он опирается на пакет find-require of rpm, вы можете заглянуть внутрь find-require, чтобы найти, какие инструменты он использует внутри.

#!/bin/bash
#
# Use rpm to recursively list dependencies of all files in a directory
#
# Syntax:
#   lsdep path/to/directory
# Example:
#   lsdep /usr/src/kernels/`uname -r`/

find $1 -type f -exec sh -c 'res=`echo '{}' | /usr/lib/rpm/find-requires`; [ -n "$res" ] && (echo;echo file '{}'; echo $res)' \;
0 голосов
/ 12 июля 2011

Установите переменную среды LD_TRACE_LOADED_OBJECTS в непустую строку и запустите ваш двоичный файл. Посмотрите на эту справочную страницу.

LD_TRACE_LOADED_OBJECTS
    (ELF only) If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd(1), instead of running normally. 
...