首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

宋宝华:一个简单的python脚本画出Linux程序/库依赖图

继《

宋宝华:一个简单的python脚本看透Linux程序对库的依赖

》之后,作为一个python的初级用户,学习和实践python的步伐根本就不下来!

在下再接再厉,晚上继续写了一个python脚本,这个脚本完成的功能似乎比前面的分析函数依赖要cool一些,譬如执行

./libdep-pic.py/usr/lib/firefox/firefox

它会得到一个如下的效果图,把组件依赖描绘地一目了然:

为什么需要这种依赖图?

1. 我们想不看源代码搞清楚各个组件的关系

2. 我们想分析某个软件有没有依赖GPL而非LGPL的库,如果我们想确保应用程序不GPL的话。

原理1:我们使用了Linux里面的dot绘图工具(没有的童鞋请apt install安装)。

假设1.dot文件存放了如下数据,

下面的命令运行后:

$ dot -Tpng-o 1.png1.dot

将得到一个1.png图片如下:

上图中,a依赖于b,b依赖于c和d。

原理2:ldd工具,可以列出来elf文件所依赖的.so,以及.so依赖的.so

譬如:

firefox依赖于libm.so.6等,如果我们对libm.so.6继续ldd,就可以分析出更深层次的依赖。所以,整个依赖图依赖于递归

源代码

上述理论的基础上,完整源代码高亮后如下:

今天写的两个小工具,我都已经提交到github,地址:

https://github.com/21cnbao/libdep/

Enjoy! 后期我会对代码进行优化,使它更加Pythonic!

希望你能够喜欢这两个小工具。

(欢迎打赏支持原创^-^)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181221B017E800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券