ldd(List Dynamic Dependencies)是Linux系统中的一个重要工具,用于查看可执行文件或共享对象文件所依赖的共享库。通过运行ldd命令加上可执行文件或库的名称,用户可以看到程序需要哪些动态库以及系统在哪些路径下查找这些库。这个命令有助于排查因缺少或库版本不兼容而引发的问题,确保所有依赖都能正确解析。它会显示库的完整路径,或者指出是否有库缺失,是Linux系统管理员和开发者管理软件依赖的必备工具。

本文中的所有示例均在Ubuntu Linux上测试通过,但该命令在其他Linux发行版上的工作方式完全相同。

Linux ldd命令

正如开头所述,ldd命令用于打印共享对象依赖。以下是该命令的语法:

ldd [option]... file...

以下是ldd工具的man页面对其的说明:

ldd命令打印命令行上指定的每个程序或共享对象所需要的共享对象(共享库)。

以下问答形式的示例将帮助你更好地理解ldd命令的工作原理。

Q1. 如何使用ldd命令?

ldd的基本用法非常简单——只需在可执行文件或共享对象文件名后面加上ldd命令即可。

ldd [object-name]

例如:

ldd test

使用ldd命令查看共享库依赖

可以看到输出中列出了所有共享库的依赖关系。

Q2. 如何让ldd输出详细信息?

如果你希望ldd输出详细信息,包括符号版本数据,可以使用-v命令行选项。例如,以下命令:

ldd -v test

ldd -v输出详细符号信息

Q3. 如何查看未使用的直接依赖?

要获取未使用的直接依赖信息,可以使用-u命令行选项。示例如下:

ldd -u test

ldd -u查看未使用的直接依赖

Q4. 如何让ldd执行重定位?

这里有两个命令行选项可以使用:-d和-r。前者告诉ldd执行数据重定位,后者则让ldd对数据对象和函数都执行重定位。两种情况下,工具都会报告缺失的ELF对象(如果有的话)。

ldd -d test
ldd -r test

Q5. 如何获取ldd帮助信息?

--help命令行选项会让ldd输出有用的使用方法相关信息。

ldd --help

ldd --help输出帮助信息

总结

ldd不属于cd、rm、mkdir这类通用工具。因为它是为特定目的而构建的,并且能很好地完成它的工作。该工具提供的命令行选项有限;我们在这里已经涵盖了其中大部分。要了解更多信息,请查看ldd的手册页