如何在Linux中使用LDD命令
在 Linux 系统中,我们经常在终端或图形应用程序中使用可执行文件。可执行文件包含共享库,这些库是跨程序共享和重用的文件。在 Windows 中,这些通常采用 DDL 文件的形式。然而,在 Linux 中,它们采用 .o 或 .so 文件的形式。
本指南将向您展示如何使用 ldd 命令行实用程序来显示可执行文件中的共享对象和依赖项。
什么是 Ldd
Ldd 是一个功能强大的命令行工具,允许用户查看可执行文件的共享对象依赖关系。库是指一个或多个预编译资源,例如函数、子例程、类或值。这些资源中的每一个都被组合起来创建库。
在 Linux 中,库文件通常位于 /lib 或 /usr/lib 目录中。库有助于节省时间,因为程序可以根据需要重新调整和使用它们。
有两种类型的库:
静态库
动态或共享库
如何安装 Ldd 命令
通常,您会发现几乎所有 Linux 发行版中都可以使用 ldd 命令。但是,如果它不可用,您可以使用以下命令安装它:
安装命令后,我们就可以开始使用它了。
基本 Ldd 命令用法
ldd 命令的一般语法非常简单。默认情况下,执行 ldd 命令会显示共享对象依赖关系。
语法如下:
例如,要显示 bash 二进制文件的共享库依赖项,我们使用以下命令:
上述命令显示的依赖关系如下:
第一部分显示虚拟动态共享对象(VDSO)。第二行显示了硬编码到可执行文件中的 ELF 解释器的路径,最后一部分显示了加载库的内存。
LD选项
我们使用 ldd 选项来修改命令的行为。支持的选项包括:
-v – 详细模式,打印所有信息。
-u – 显示未使用的直接依赖项
-d – 执行数据重定位并显示丢失的 ELF 对象。
-r – 执行数据和函数重定位并显示丢失的 ELF 对象和函数。
显示详细输出
要显示二进制文件的依赖关系以及详细信息,我们可以将 -v 标志传递给 ldd 命令,如下所示:
Ldd 显示未使用的直接依赖项
使用 -u 标志显示未使用的直接依赖项,如下所示:
注意:Ldd 仅适用于动态可执行文件。如果在非动态可执行文件上使用,它将显示错误:
综上所述
本教程介绍了如何在 Linux 中使用 ldd 命令并获取动态可执行文件的共享库依赖关系信息。如果您从本教程中学到了一些东西,请与其他人分享。
如果您正在寻找详细信息,请考虑以下手册页:
https://man7.org/linux/man-pages/man1/ldd.1.html
https://man7.org/linux/man-pages/man7/vdso.7.html
https://man7.org/linux/man-pages/man7/libc.7.html
https://man7.org/linux/man-pages/man8/ld.so.8.html