找回密码
 骑士注册

QQ登录

微博登录


Linux有问必答:如何查看Linux上程序或进程用到的库

2014-08-14 11:00    评论: 13 收藏: 4 分享: 3    

问题:我想知道当我调用一个特定的可执行文件在运行时载入了哪些共享库。是否有方法可以明确Linux上可执行程序或运行进程的共享库依赖关系?

查看可执行程序的共享库依赖关系

要找出某个特定可执行依赖的库,可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。

$ ldd /path/to/program

注意!并不推荐为任何不可信的第三方可执行程序运行ldd,因为某些版本的ldd可能会直接调用可执行程序来明确其库文件依赖关系,这样可能不安全。

取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖,使用如下命令:

$ objdump -p /path/to/program | grep NEEDED 

查看运行进程的共享库依赖关系

如果你想要找出被一个运行中的进程载入的共享库,你可以使用pldd命令,它会显示出在运行时被载入一个进程里的所有共享对象。

$ sudo pldd <PID>

注意你需要root权限去执行pldd命令。

或者,也可以选择一个叫做pmap的命令行工具。它报告一个进程的内存映射,也能显示出运行进程的库文件依赖。

$ sudo pmap <PID>


via: http://ask.xmodulo.com/check-library-dependency-program-process-linux.html

译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

发表评论


最新评论

我也要发表评论

[1]
小猪爸爸1215 发表于 2014-08-14 12:33 的评论:
看图不是objdump?
[2]
netb2c 发表于 2014-08-16 01:34 的评论:
没有显示program header而已,只显示了dynamic section.
[3]
linux 发表于 2014-08-16 14:56 的评论:
不懂啊
[4]
netb2c 发表于 2014-08-17 06:39 的评论:
樓主 對  objdump -p /usr/bin/git 輸出結果進行了過濾.  打印出來的信息是Dynamic section一部分. 即所有依賴.
linux 2014-08-17 21:46 回复
哦哦~~
[1]
小猪爸爸1215 发表于 2014-08-14 12:33 的评论:
看图不是objdump?
netb2c 2014-08-16 01:34 回复
没有显示program header而已,只显示了dynamic section.
[1]
绿色圣光 发表于 2014-08-14 11:01 的评论:
这个很有用!
netb2c 2014-08-16 01:32 回复
是的.
游客 2014-08-15 11:23 回复
上海FreeTech(群号:348891690)聚焦高端技术交流、项目对接;打造免费、开放、分享、合作的技术氛围,非上
路灯下看雪_ 2014-08-14 12:33  新浪微博网友评论 回复
Repost
戦场原礼弥_Error302 2014-08-14 11:33  新浪微博网友评论 回复
get√
breakersunsl 2014-08-14 11:33  新浪微博网友评论 回复
@我的印象笔记
马楠James 2014-08-14 11:33  新浪微博网友评论 回复
去年遇到过这个问题。

LCTT 译者

共计翻译: 35
贡献时间:2014-05-21 -> 2015-06-11

返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。