Linux 系统中查看依赖库的方法及技巧

在 Linux 系统中,依赖库是软件正常运行的重要组成部分,了解一个软件的依赖库,可以帮助我们更好地管理和维护系统,本文将介绍几种在 Linux 系统中查看依赖库的方法及技巧。
使用 ldd 命令查看依赖库
ldd(link-editor)命令是 Linux 系统中查看可执行文件依赖库的常用工具,以下是如何使用 ldd 命令查看依赖库的步骤:
- 打开终端。
- 输入
ldd 可执行文件路径,按回车键。 - 查看输出结果。
输出结果中,第一列显示的是可执行文件,第二列显示的是依赖库的路径,第三列显示的是库的版本信息。
查看 ./test 可执行文件的依赖库:
$ ldd ./test
linux-vdso.so.1 (0x00007ff9c8c30000)
libtest.so.1 => /usr/local/lib/libtest.so.1 (0x00007f9f9a9f3000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9f9a7b2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9f9a9f1000)
从输出结果中可以看出,./test 可执行文件依赖于 libtest.so.1、libc.so.6 和 /lib64/ld-linux-x86-64.so.2 三个库。

使用 readelf 命令查看依赖库
readelf 命令是查看可执行文件、对象文件和动态库的详细信息的工具,以下是如何使用 readelf 命令查看依赖库的步骤:
- 打开终端。
- 输入
readelf -d 可执行文件路径,按回车键。 - 查看输出结果。
输出结果中,DYNSTR 段包含了动态链接库的名称和版本信息。
查看 ./test 可执行文件的依赖库:
$ readelf -d ./test
...
Dynamic sections:
...
Num: Type Name Size Flags Link Align
0x0000000000000001 (NEEDED) Shared library: [libtest.so.1]
0x0000000000000002 (NEEDED) Shared library: [libc.so.6]
0x0000000000000003 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
...
从输出结果中可以看出,./test 可执行文件依赖于 libtest.so.1、libc.so.6 和 ld-linux-x86-64.so.2 三个库。
使用 nm 命令查看依赖库

nm 命令用于列出可执行文件、对象文件或动态库中的符号,以下是如何使用 nm 命令查看依赖库的步骤:
- 打开终端。
- 输入
nm -D 可执行文件路径,按回车键。 - 查看输出结果。
输出结果中,第一列显示的是符号名称,第二列显示的是符号类型,第三列显示的是符号值。
查看 ./test 可执行文件的依赖库:
$ nm -D ./test
...
0000000000000000 T _init
0000000000000000 T _fini
0000000000000000 T main
0000000000000000 T test
...
0000000000000000 g .dynamic
0000000000000000 g .dynsym
...
0000000000000000 r .rela.dyn
0000000000000000 r .rela.plt
...
0000000000000000 R _DYNAMIC
0000000000000000 R _RTLD_GLOBAL
...
0000000000000000 R /lib/x86_64-linux-gnu/libc.so.6
0000000000000000 R /lib64/ld-linux-x86-64.so.2
...
从输出结果中可以看出,./test 可执行文件依赖于 libtest.so.1、libc.so.6 和 ld-linux-x86-64.so.2 三个库。
在 Linux 系统中,了解一个软件的依赖库对于系统维护和软件开发都具有重要意义,本文介绍了三种在 Linux 系统中查看依赖库的方法,包括 ldd、readelf 和 nm 命令,通过这些方法,我们可以快速、准确地获取软件的依赖库信息,为系统维护和软件开发提供有力支持。


















