Linux 分析应用程序依赖工具
来源:互联网 发布:游戏编程directx9.0 编辑:程序博客网 时间:2024/05/29 17:16
查看可执行程序的共享库依赖关系
要找出某个特定可执行依赖的库,可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。
$ ldd /path/to/program
注意!并不推荐为任何不可信的第三方可执行程序运行ldd,因为某些版本的ldd可能会直接调用可执行程序来明确其库文件依赖关系,这样可能不安全。
取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖,使用如下命令:
$ objdump -p/path/to/program| grep NEEDED
查看运行进程的共享库依赖关系
如果你想要找出被一个运行中的进程载入的共享库,你可以使用pldd命令,它会显示出在运行时被载入一个进程里的所有共享对象。$ sudo pldd <PID>
注意你需要root权限去执行pldd命令。
或者,也可以选择一个叫做pmap的命令行工具。它报告一个进程的内存映射,也能显示出运行进程的库文件依赖。
$ sudo pmap <PID>
查看交叉编译的可执行文件的信息
$readelf <options> filename
可以读取 filename 的信息。支持 32bit 64bit.类似 objdump 工具,但是比它更细节。
readelf
命令是一个有很多特性的实用程序,它让您能够解析和读取 ELF 对象。readelf
有一个有趣的用途,就是用来识别对象内可再定位的项。
$readelf -r filename
从这个列表中,您可以看到各种各样的需要再定位(到 libc.so)的 C
库调用,包括对 DL API(libdl.so)的调用。函数 __libc_start_main
是一个 C
库函数,它优先于程序的 main
函数(一个提供必要初始化的 shell)而被调用。
nm
,它列出来自对象文件(包括调试信息)的符号。
还可以将 EFL 程序作为参数,直接调用 Linux 动态链接器,从而手动启动映像:
mtj@camus:~/dl$ /lib/ld-linux.so.2 ./dl> libm.so expf 0.0 1.000000>另外,可以使用 ld-linux.so 的
--list
选项来罗列 ELF 映像的依赖项(ldd
命令也如此)。切记,它仅仅是一个用户空间程序,是由内核在需要时引导的。参考:
http://www.gzidc.com/article/detail.php?aid=3688
http://wanwentao.blog.51cto.com/2406488/569291/
- Linux 分析应用程序依赖工具
- linux 安装包依赖分析工具
- Android应用程序内存分析工具
- linux查看应用程序依赖的库
- Linux性能分析工具
- linux性能分析工具
- linux性能分析工具
- Linux性能分析工具
- linux 性能分析工具
- linux 性能分析工具
- linux性能分析工具
- Linux源码分析工具
- linux源码分析工具
- Linux应用程序开发工具--GCC编译器
- 使用代码分析工具分析应用程序质量【鸡蛋】
- Java类依赖、被依赖分析工具Class Dependency Analyzer (CDA)
- linux性能分析工具gprof
- linux性能分析工具vmstat
- dashconf.php---dashboard.php总览界面配置文件分析
- Android 编程下 Touch 事件的分发和消费机制
- Oracle的回收站和闪回查询机制(二)
- 第十二周项目1---阅读3
- php 连接mysql 方式 过程式和对象方法(mysqli,mysql_connet)
- Linux 分析应用程序依赖工具
- vector的成员函数解析
- javascript------实现multiple属性下拉框
- Testin云测:搜狐新闻客户端5.0能否承载张朝阳“个性化阅读”梦想
- BZOJ 2007 NOI2010 海拔 平面图最小割
- Word Break II
- 在Mac OS X上使用HAXM加速Android Emulator
- Windows SublimeText内使用NDK编译Android so(不用cygwin)
- Clojure语法小结