编程方式列出Linux上的共享库依赖

时间:2011-07-12 07:20:21

标签: linux linker shared-libraries dependency-management

是否有任何编程方式(系统调用?)列出Linux上的共享库依赖?而不是使用ldd ...

4 个答案:

答案 0 :(得分:4)

readelf -Wa lib.so|grep NEEDED

答案 1 :(得分:1)

答案 2 :(得分:0)

将LD_TRACE_LOADED_OBJECTS环境变量设置为非空字符串并运行二进制文件。查看this手册页。

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. 

答案 3 :(得分:0)

这是我在Fedora上使用的简单bash脚本,它依赖于rpm包的find-requires,你可以查看find-requires以找到它内部使用的工具。

#!/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)' \;