ldd 是一个在类 Unix 系统(包括 Linux 和 macOS)中常用的命令行工具,它的全称是“Dynamic Linker Debugger”。这个命令用于检查可执行文件或动态库的共享库依赖关系。当你运行 ldd 并提供一个可执行文件作为参数时,它会显示该文件运行时所依赖的所有动态链接库(.so 文件),以及这些库在系统中的路径。
使用示例:
ldd /path/to/executable_or_library
输出信息包括每个依赖库的名字、当前使用的版本以及其所在路径。如果某个依赖库没有找到或者存在其他问题,ldd 会在相应行前面显示一个状态标识,如 (not found) 或者描述错误的具体原因。
以下是它的一些常用参数:
- -v 或 --verbose: 显示详细信息,包括每个库的完整路径、版本信息以及其他详细输出。
- -u 或 --unused: 显示未使用的直接依赖项,即那些在可执行文件或库中被引用但实际运行时并未调用到的共享库。
- -d 或 --data-relocs: 对ELF格式的目标文件进行数据重定位,并报告缺少的目标对象。这个选项主要对调试有用。
- -r 或 --function-relocs(在某些版本的ldd中): 这个选项是“read relocs”的缩写,表示读取并显示重定位信息。使用 -r 时,ldd 不仅会列出程序的共享库依赖,还会尝试解析和显示重定位条目,这对于调试程序可能很有帮助,因为它能提供更多关于程序内部结构和符号引用的信息。![对目标对象和函数执行重新部署,并报告缺少的目标对象和函数。同样主要用于调试目的。
- –version: 打印 ldd 命令自身的版本信息。
注意:尽管名字中有 “Debugger”,但 ldd 并不是一个真正的调试器,它并不执行程序代码,只是静态地分析二进制文件的依赖情况。