readelf命令

readelf命令


readelf用来显示ELF格式目标文件的信息.可通过参数选项来控制显示哪些特定信息。

(注意: readelf不支持显示archive文档, 也不支持64位的ELF文件)。

使用方法1:

查看共享库的依赖库(NEEDED)和搜索名(SONAME)。

readelf -d <file_name>

例如:

#readelf -d libuClibc-0.9.30rc2.so 

Dynamic section at offset 0x90f50 contains 18 entries: 

Tag Type Name/Value 

0x00000001 (NEEDED) Shared library: [ld-uClibc.so.0] 

0x0000000e (SONAME) Library soname: [libc.so.0] 

......

使用方法2:

显示ELF头信息

readelf -h <file_name>

例如:

#readelf -h libuClibc-0.9.30rc2.so 

ELF Header: 

Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 

Class: ELF32 

Data: 2's complement, little endian 

Version: 1 (current) 

OS/ABI: UNIX - System V 

ABI Version: 0 

Type: DYN (Shared object file) 

......

-a 

--all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I. 


-h 

--file-header 显示elf文件开始的文件头信息. 


-l 

--program-headers  

--segments 显示程序头(段头)信息(如果有的话)。 


-S 

--section-headers  

--sections 显示节头信息(如果有的话)。 


-g 

--section-groups 显示节组信息(如果有的话)。 


-t 

--section-details 显示节的详细信息(-S的)。 


-s 

--syms        

--symbols 显示符号表段中的项(如果有的话)。 


-e 

--headers 显示全部头信息,等价于: -h -l -S 


-n 

--notes 显示note段(内核注释)的信息。 


-r 

--relocs 显示可重定位段的信息。 


-u 

--unwind 显示unwind段信息。当前只支持IA64 ELF的unwind段信息。 


-d 

--dynamic 显示动态段的信息。 


-V 

--version-info 显示版本段的信息。 


-A 

--arch-specific 显示CPU构架信息。 


-D 

--use-dynamic 使用动态段中的符号表显示符号,而不是使用符号段。 



附加:
  readelf与objdump命令的区别:
1) objdump使用了bfd库进行文件读取,而readelf则没有,另外写的一套代码,且对一些条件的判断并不是很严格。比如对于没有指定处理方式的CPU类型,BFD库将拒绝往下执行,readelf还是可以显示其内容。 
2) readelf可以显示调试信息,而objdump则没有。但是实际上bfd库支持DWARF的处理,通过简单处理objdump也可以显示调试信息,就如同nm做的那样。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值