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

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

 readelf -Wa lib.so|grep NEEDED 

将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. 

这是我在Fedora上自己使用的简单的bash脚本,它依赖于rpm包的find-requires,你可以在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)' \;