在针对本机平台进行开发时,我可以使用ldd列出所有共享库(.so文件),这些文件是我构建的二进制可执行文件,将在启动时尝试加载。但是在交叉编译时,我不知道如何获取相同的信息。在ldd不正常的binutils工具,像strip或者ar,可以一起建立gcc了交叉编译,而是,这是一个神秘的shell脚本,显然只能在本地平台上运行。
ldd
strip
ar
gcc
因此,使用跨目标binutils工具,是否有任何方法可以获取外部二进制文件的动态链接依赖关系列表?
有没有办法获取外来二进制文件的动态链接依赖关系的列表
您可以很容易地列出二进制文件的 直接 依赖关系:
readelf -d a.out | grep NEEDED 0x0000000000000001 (NEEDED) Shared library: [librt.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
我知道没有办法递归地继续此操作以获取完整列表(ldd确实如此)。您必须NEEDED手动为每个库重复此过程。
NEEDED