Chinaunix首页 | 论坛 | 博客
  • 博客访问: 968450
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-08-27 18:42:30

    首先我们可以使用file命令或者readelf -h来察看二进制文件的格式以及头部,有时候有些.a文件里面包含了多个obj文件,是一个archive,因此,无法用file命令查看格式,此时就得用readelf来看。readelf -h会列出其headers,以及各个构成部分的格式。
    对于dynamic 库文件,用readelf -h可以查看其格式,用readelf -s也可以看到符号,但是如果该库是c++的,那么还需要对符号进行demangle,此时我们可以用nm命令。直接使用nm命令会识别不出来,因为我们这个是动态库,因此需要使用-D参数,此外由于包含了c++的符号,需要demangle,因此还得加上-C参数,有时候,根据其输出,如果一个符号前面的地址是一串数字,那么可以认为这个函数符号在这个库里面有定义,而有的符号没有合法的地址,而且有一个U标记,这表明这个符号不在这个扩里面定义。
    用objdump也可以查看符号,需要使用-T来查看动态库的符号,使用-t来查看非动态库的符号,可以使用-C来进行demangle操作。
阅读(1973) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~