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)
......
與objdump命令的區別
1) objdump使用了bfd庫進行文件讀取,而readelf則沒有,另外寫的一套代碼,且對一些條件的判斷並不是很嚴格。比如對於沒有指定處理方式的CPU類型,BFD庫將拒絕往下執行,readelf還是可以顯示其內容。
2) readelf可以顯示調試信息,而objdump則沒有。但是實際上bfd庫支持DWARF的處理,通過簡單處理objdump也可以顯示調試信息,就如同nm做的那樣。