如何在 Linux 中查看可执行文件使用的所有共享库?


我们知道共享库是在运行时可以链接到任何程序的库。为了查看可执行文件使用的所有共享库,我们使用 Linux 命令实用程序 ldd。我们可以在 Linux 机器上轻松找到共享库,因为它们通常以 lib* 前缀开头。

让我们首先了解并查看一些如何使用 Linux 提供给我们的 ldd 命令的示例。

Ldd 是 Linux 提供给我们的一个命令实用程序,主要用于我们想知道可执行文件甚至共享库的共享库依赖项的情况。

LDD 语法

ldd [OPTION] .. FILE ..

上述命令中的 [OPTION] 占位符可以替换为 ldd 命令提供的标志,其中一些最常用的标志是 -

  • -v - 打印所有信息

  • -d - 处理数据重定位

  • -u - 用于打印未使用的直接依赖项

  • -r - 处理数据和函数重定位

现在我们对 ldd 命令有了一点了解,让我们探索一些它的示例,在这些示例中,我们将显示可执行文件的依赖项等等。

示例 1

命令

ldd /bin/cp

在上面的命令中,我们正在对存储在 Linux 目录的 /bin 文件夹内的名为 cp 的可执行文件运行 ldd 命令。

输出

linux-vdso.so.1 => (0x00007fffaf3ff000)
libselinux.so => /lib64/libselinux.so (0x0000003a06a00000)
librt.so => /lib64/librt.so (0x0000003a06200000)
libacl.so.1 => /lib64/libacl.so (0x0000003a13000000)
libattr.so.1 => /lib64/libattr.so (0x0000003a0ea00000)
libc.so.3 => /lib64/libc.so.3 (0x0000003a05200000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003a05a00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003a04a00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003a05600000)

我们还可以借助下面示例中显示的命令来显示可执行文件的未使用直接依赖项

示例 2

命令

ldd -u /bin/cp

输出

Unused direct dependencies:

/lib64/libselinux.so.1
/lib64/librt.so.1
/lib64/libacl.so.1
/lib64/libattr.so.1

更新时间: 2021-07-31

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告