问题:在Linux上,有的时候我们想知道我们调用的某一程序或者已经在运行的某个进程加载了哪些共享库(或者说它依赖于哪些库),那我们该如何操作呢?

检查一个程序所依赖的共享库

想知道某个可执行文件依赖于哪些库,可以使用ldd命令,我想这个命令对于大多数Linux开发者也都很熟悉。这个命令会调用动态链接工具来查看某个可执行文件依赖于哪些动态库。

ldd的使用格式:ldd /path/to/program (记住:一定要是绝对路径)

注意:我们最好不要对一些不可信的第三方程序执行ldd命令,因为有些版本的ldd命令可能会通过直接调用可执行文件来识别它所依赖的库,这样是很危险的。

此时,我们可以使用一种安全的方式来获得一些未知程序所依赖的库:objdump。

命令格式:objdump -p /path/to/program | grep NEEDED

如何获得一个进程所依赖的库

所谓进程就是运行的程序。我们如果想获得进程所以来的动态库,可以使用pldd命令,不过这个命令需要root权限。

命令格式:sudo pldd <PID>

除此以外,pmap这个命令行命令可以查看某个进程的内存映射,我们同样也可以从中看出进程依赖的动态库,用法同pldd。

参考网址:http://ask.xmodulo.com/check-library-dependency-program-process-linux.html