如何检查 Linux 上的程序或进程使用了哪些库
问题:我想知道当我调用特定的可执行文件时,在运行时加载哪些共享库。有什么方法可以识别 Linux 上可执行程序或正在运行的进程的共享库依赖关系吗?
您可以使用以下方法来识别给定程序可执行文件(例如,/path/to/program
)或给定运行进程(例如,PID 1149
)所依赖的共享库。
检查可执行程序的共享库依赖性
要找出特定可执行文件依赖哪些库,您可以使用 ldd 命令。此命令调用动态链接器来查找可执行文件的库依赖项。
$ ldd /path/to/program

请注意,不建议使用任何不受信任的第三方可执行文件运行ldd
,因为某些版本的ldd
可能会直接调用可执行文件来识别其库依赖项,这可能存在安全风险。
相反,显示未知应用程序二进制文件的库依赖关系的更安全方法是使用以下命令。
$ objdump -p /path/to/program | grep NEEDED

检查正在运行的进程的共享库依赖性
如果您想了解正在运行的进程加载了哪些共享库,可以使用 pldd 命令,该命令显示运行时加载到进程中的所有共享对象。
$ sudo pldd <PID>
请注意,您需要 root 权限才能运行 pldd 命令。

或者,名为 pmap
的命令行实用程序(报告进程的内存映射)也可以显示正在运行的进程的共享库依赖性。
$ sudo pmap <PID>
