Linux ldd 命令可以显示可执行文件使用的动态库。这是一个 bash 脚本。但它似乎很脆弱,并且不适用于某些二进制文件。有替代工具吗?
在我的具体示例中,我可以使用:
% 文件 datab2txt
datab2txt:ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),静态链接,用于 GNU/Linux 2.4.0,未剥离
但 ldd 失败:
% ldd -v datab2txt
不是动态可执行文件
你也可以这样做:
readelf -d executable | grep NEEDED
Run Code Online (Sandbox Code Playgroud)
但这可能不会做你想要的。它显示executable
链接到的库,但不是它需要的所有库(一个库可能需要另一个库)。
输出file
说“静态链接”。ldd
仅适用于动态链接的可执行文件。
(从技术上讲,Linuxldd
所做的只是/lib/ld-linux.so.2
在设置环境变量后调用 Linux 可执行加载程序。所以它应该是最可靠的方法。)
一些程序可能dlopen()
用于加载库,以避免使程序硬依赖于它们。例如,Glibc 以这种方式加载 NSS 库,因为它们的名称仅在运行时已知,而不是在编译/链接时已知。
归档时间: |
|
查看次数: |
10532 次 |
最近记录: |