如何显示 Linux 中可执行文件使用的所有共享库?
我们知道共享库是可以在运行时链接到任何程序的库。为了查看可执行文件使用的所有共享库,我们使用名为ldd的Linux命令实用程序。我们可以很容易地在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