chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

readelf命令:用于讀取ELF格式文件的詳細信息

Linux愛好者 ? 來源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-02 14:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.功能簡介

readelf 用于讀取 ELF(Executable and Linkable Format)格式文件的詳細信息,包括目標文件、可執(zhí)行文件、共享目標文件與核心轉(zhuǎn)儲文件。

1.1 ELF 文件分類

(1)可重定位文件(Relocatable File),這類文件包含了代碼和數(shù)據(jù),用于鏈接生成可以執(zhí)行文件或共享目標文件,目標文件和靜態(tài)鏈接庫均屬于可重定位文件,例如*.olib*.a文件;

(2)可執(zhí)行文件(Executable File),用于生成進程映像,載入內(nèi)存執(zhí)行。Linux 環(huán)境下的 ELF 可執(zhí)行文件一般沒有擴展名,例如用戶命令 ls;

(3)共享目標文件(Shared Object File),這種文件包含了代碼和數(shù)據(jù),用于和可重定位文件或其他共享目標文件一起生成可執(zhí)行文件。例如 Linux 的動態(tài)共享對象(Dynamic Shared Object),C 語言運行時庫 glibc-2.5.so;

(4)核心轉(zhuǎn)儲文件(Core Dump File),當進程意外終止時,系統(tǒng)可以將該進程的地址空間的內(nèi)容及終止時的一些其他信息轉(zhuǎn)儲到核心轉(zhuǎn)儲文件。例如 Linux 下的 core dump。

1.2 ELF 文件組成

ELF 文件頭描述了 ELF 文件的總體信息,包括系統(tǒng)相關(guān)、類型相關(guān)、加載相關(guān)和鏈接相關(guān)的信息。
(1)系統(tǒng)相關(guān),比如ELF 文件標識的魔數(shù),以及硬件和平臺等相關(guān)信息,增加了 ELF 文件的移植性,使交叉編譯成為可能;
(2)類型相關(guān),比如 ELF 文件類型,分別有目標文件、可執(zhí)行文件、動態(tài)鏈接庫與核心轉(zhuǎn)儲文件;
(3)加載相關(guān),比如程序頭,描述了 ELF 文件被加載時的段信息;
(4)鏈接相關(guān),比如節(jié)頭,描述了 ELF 文件的節(jié)信息。

2.命令格式

readelf

3.選項說明

運行 readelf 的時候,除了 -v 和 -H 之外,其它的選項必須有一個被指定。

-a,--all:顯示全部信息,等價于-h -l -S -s -r -d -V -A -I
-h,--file-header:顯示文件頭信息
-l,--program-headers,--segments:顯示程序頭(如果有的話)
-S,--section-headers,--sections:顯示節(jié)頭信息(如果有的話)
-g,--section-groups:顯示節(jié)組信息(如果有的話)
-t,--section-details:顯示節(jié)的詳細信息(-S的)
-s,--syms,--symbols:顯示符號表節(jié)中的項(如果有的話)
--dyn-syms:顯示動態(tài)符號表節(jié)中的項(如果有的話)
-e,--headers:顯示全部頭信息,等價于-h -l -S
-n,--notes:顯示note段(內(nèi)核注釋)的信息
-r,--relocs:顯示可重定位段的信息。
-u,--unwind:顯示unwind段信息。當前只支持IA64 ELF的unwind段信息。
-d,--dynamic:顯示動態(tài)段的信息
-V,--version-info:顯示版本段的信息
-A ,--arch-specific:顯示CPU構(gòu)架信息
-D,--use-dynamic:使用動態(tài)符號表顯示符號,而不是符號表
-x ,--hex-dump=:以16進制方式顯示指定節(jié)內(nèi)容。number指定節(jié)表中節(jié)的索引,或字符串指定文件中的節(jié)名
-R ,--relocated-dump=:以16進制方式顯示指定節(jié)內(nèi)容。number指定節(jié)表中節(jié)的索引,或字符串指定文件中的節(jié)名。節(jié)的內(nèi)容被展示前將被重定位。
-p ,--string-dump=:以可打印的字符串顯示指定節(jié)內(nèi)容。number指定節(jié)表中節(jié)的索引,或字符串指定文件中的節(jié)名。
-c,--archive-index:展示檔案頭中的文件符號索引信息,執(zhí)行與 ar 的 t 命令相同的功能,但不使用 BFD 庫
-w[liaprmfFsoR],--debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]:顯示調(diào)試段中指定的內(nèi)容
--dwarf-depth=n:將“.debug_info”節(jié)的轉(zhuǎn)儲限制為n個子級。這只對--debug dump=info有用。默認為打印所有DIE(debugging information entry);n的特殊值0也將具有此效果
--dwarf-start=n:只打印以編號為n的模具開始的DIE,僅適用于使用--debug dump=info選項時。該選項可以與--dwarf-depth=n連用。
-I,--histogram:顯示符號的時候,顯示 bucket list 長度的柱狀圖
-v,--version:顯示 readelf 的版本信息
-H,--help:顯示 readelf 所支持的命令行選項
-W,--wide:寬行輸出
@file:可以將選項集中到一個文件中,然后使用這個@file 選項載入

4.常用示例

4.1準備工作

(1)首先生成可執(zhí)行文件形式的 ELF 文件。

使用g++,分別不使用和使用-g選項,編譯生成可執(zhí)行文件main.out和main.debug.out。

g++main.cpp-omain.out
g++-gmain.cpp-omain.debug.out

ll
-rw-r--r--1rootroot74Mar2111:48main.cpp
-rwxr-xr-x1rootroot9119Mar2111:49main.out
-rwxr-xr-x1rootroot19695Mar2111:49main.debug.out

可見,因為加入了調(diào)試信息,main.debug.out 的大小明顯比 main.out 大很多。

(2)生成庫文件。

//
//@file:print.cpp
//

#include

voidprint()
{
std::cout<<"readelf"<

使用g++和ar,分別生成靜態(tài)鏈接庫libprint.a和動態(tài)鏈接庫libprint.so。

#生成靜態(tài)庫libmy.a
g++-cprint.cpp-oprint.o
arclibprint.aprint.o

#生成動態(tài)庫libprint.so
g++-shared-fPIC-olibprint.soprint.cpp

編譯之后,查看生成的文件。

ll
-rw-r--r--1rootroot2810Mar2113:50libprint.a
-rwxr-xr-x1rootroot8613Mar2113:56libprint.so
-rw-r--r--1rootroot104Mar2113:40print.cpp
-rw-r--r--1rootroot2664Mar2113:40print.o

基于以上可執(zhí)行文件和庫,下面給出一些常用的示例。

4.2 常用示例

(1)讀取可執(zhí)行文件形式的 ELF 文件頭信息。

readelf-hmain.out
ELFHeader:
Magic:7f454c46020101000000000000000000
Class:ELF64
Data:2'scomplement,littleendian
Version:1(current)
OS/ABI:UNIX-SystemV
ABIVersion:0
Type:EXEC(Executablefile)
Machine:AdvancedMicroDevicesX86-64
Version:0x1
Entrypointaddress:0x400780
Startofprogramheaders:64(bytesintofile)
Startofsectionheaders:4496(bytesintofile)
Flags:0x0
Sizeofthisheader:64(bytes)
Sizeofprogramheaders:56(bytes)
Numberofprogramheaders:9
Sizeofsectionheaders:64(bytes)
Numberofsectionheaders:30
Sectionheaderstringtableindex:27

Type:EXEC (Executable file)可以看出其類型為 EXEC(可執(zhí)行文件)。并且可以看出文件的體系結(jié)構(gòu)為 x86-64。另外,含調(diào)試信息的"main.debug.out"和不含調(diào)試信息的"main"除了一些大小信息之外,其內(nèi)容是一樣的。

(2)讀取目標文件形式的 ELF 文件頭信息。

readelf-hprint.o
ELFHeader:
Magic:7f454c46020101000000000000000000
Class:ELF64
Data:2'scomplement,littleendian
Version:1(current)
OS/ABI:UNIX-SystemV
ABIVersion:0
Type:REL(Relocatablefile)
Machine:AdvancedMicroDevicesX86-64
Version:0x1
Entrypointaddress:0x0
Startofprogramheaders:0(bytesintofile)
Startofsectionheaders:488(bytesintofile)
Flags:0x0
Sizeofthisheader:64(bytes)
Sizeofprogramheaders:0(bytes)
Numberofprogramheaders:0
Sizeofsectionheaders:64(bytes)
Numberofsectionheaders:15
Sectionheaderstringtableindex:12

可見目標文件的elf文件,其類型為REL(可重定位文件)。且相對于可執(zhí)行文件,目標文件沒有程序頭(段頭)信息。

(3)讀取靜態(tài)庫文件形式的 ELF 文件頭信息。

readelf-hlibprint.a

File:libprint.a(print.o)
ELFHeader:
Magic:7f454c46020101000000000000000000
Class:ELF64
Data:2'scomplement,littleendian
Version:1(current)
OS/ABI:UNIX-SystemV
ABIVersion:0
Type:REL(Relocatablefile)
Machine:AdvancedMicroDevicesX86-64
Version:0x1
Entrypointaddress:0x0
Startofprogramheaders:0(bytesintofile)
Startofsectionheaders:488(bytesintofile)
Flags:0x0
Sizeofthisheader:64(bytes)
Sizeofprogramheaders:0(bytes)
Numberofprogramheaders:0
Sizeofsectionheaders:64(bytes)
Numberofsectionheaders:15
Sectionheaderstringtableindex:12

可見靜態(tài)庫文件的elf文件,其類型為REL(可重定位文件),且沒有程序頭(段頭)信息。

(4)讀取動態(tài)庫文件形式的 ELF 文件頭信息。

readelf-hlibprint.so
ELFHeader:
Magic:7f454c46020101000000000000000000
Class:ELF64
Data:2'scomplement,littleendian
Version:1(current)
OS/ABI:UNIX-SystemV
ABIVersion:0
Type:DYN(Sharedobjectfile)
Machine:AdvancedMicroDevicesX86-64
Version:0x1
Entrypointaddress:0x870
Startofprogramheaders:64(bytesintofile)
Startofsectionheaders:4464(bytesintofile)
Flags:0x0
Sizeofthisheader:64(bytes)
Sizeofprogramheaders:56(bytes)
Numberofprogramheaders:7
Sizeofsectionheaders:64(bytes)
Numberofsectionheaders:28
Sectionheaderstringtableindex:25

這里,可見動態(tài)庫其類型為DYN(共享目標文件),和可執(zhí)行文件類似,同樣擁有程序頭(段頭)信息。

(5)查看可執(zhí)行的 ELF 文件程序頭信息。

readelf-lmain.out

ElffiletypeisEXEC(Executablefile)
Entrypoint0x400780
Thereare9programheaders,startingatoffset64

ProgramHeaders:
TypeOffsetVirtAddrPhysAddr
FileSizMemSizFlagsAlign
PHDR0x00000000000000400x00000000004000400x0000000000400040
0x00000000000001f80x00000000000001f8RE8
INTERP0x00000000000002380x00000000004002380x0000000000400238
0x000000000000001c0x000000000000001cR1
[Requestingprograminterpreter:/lib64/ld-linux-x86-64.so.2]
LOAD0x00000000000000000x00000000004000000x0000000000400000
0x0000000000000b040x0000000000000b04RE200000
LOAD0x0000000000000dd80x0000000000600dd80x0000000000600dd8
0x00000000000002840x00000000000003a0RW200000
DYNAMIC0x0000000000000df80x0000000000600df80x0000000000600df8
0x00000000000002000x0000000000000200RW8
NOTE0x00000000000002540x00000000004002540x0000000000400254
0x00000000000000440x0000000000000044R4
GNU_EH_FRAME0x000000000000098c0x000000000040098c0x000000000040098c
0x00000000000000440x0000000000000044R4
GNU_STACK0x00000000000000000x00000000000000000x0000000000000000
0x00000000000000000x0000000000000000RW10
GNU_RELRO0x0000000000000dd80x0000000000600dd80x0000000000600dd8
0x00000000000002280x0000000000000228R1

SectiontoSegmentmapping:
SegmentSections...
00
01.interp
02.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.text.fini.rodata.eh_frame_hdr.eh_frame
03.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss
04.dynamic
05.note.ABI-tag.note.gnu.build-id
06.eh_frame_hdr
07
08.init_array.fini_array.jcr.dynamic.got

注意:含調(diào)試信息的可執(zhí)行文件"main.debug.out"和不含調(diào)試信息的"main.out"其內(nèi)容是一樣的。

(6)查看動態(tài)庫 ELF 文件程序頭信息。

readelf-llibprint.so

ElffiletypeisDYN(Sharedobjectfile)
Entrypoint0x870
Thereare7programheaders,startingatoffset64

ProgramHeaders:
TypeOffsetVirtAddrPhysAddr
FileSizMemSizFlagsAlign
LOAD0x00000000000000000x00000000000000000x0000000000000000
0x0000000000000acc0x0000000000000accRE200000
LOAD0x0000000000000da80x0000000000200da80x0000000000200da8
0x00000000000002a00x00000000000002a8RW200000
DYNAMIC0x0000000000000dd00x0000000000200dd00x0000000000200dd0
0x00000000000001f00x00000000000001f0RW8
NOTE0x00000000000001c80x00000000000001c80x00000000000001c8
0x00000000000000240x0000000000000024R4
GNU_EH_FRAME0x00000000000009f80x00000000000009f80x00000000000009f8
0x000000000000002c0x000000000000002cR4
GNU_STACK0x00000000000000000x00000000000000000x0000000000000000
0x00000000000000000x0000000000000000RW10
GNU_RELRO0x0000000000000da80x0000000000200da80x0000000000200da8
0x00000000000002580x0000000000000258R1

SectiontoSegmentmapping:
SegmentSections...
00.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.text.fini.rodata.eh_frame_hdr.eh_frame
01.init_array.fini_array.jcr.data.rel.ro.dynamic.got.got.plt.bss
02.dynamic
03.note.gnu.build-id
04.eh_frame_hdr
05
06.init_array.fini_array.jcr.data.rel.ro.dynamic.got

(7)查看一個可執(zhí)行的 ELF 文件的節(jié)頭信息。

readelf-Smain.out
Thereare30sectionheaders,startingatoffset0x1190:

SectionHeaders:
[Nr]NameTypeAddressOffset
SizeEntSizeFlagsLinkInfoAlign
[0]NULL000000000000000000000000
00000000000000000000000000000000000
[1].interpPROGBITS000000000040023800000238
000000000000001c0000000000000000A001
[2].note.ABI-tagNOTE000000000040025400000254
00000000000000200000000000000000A004
[3].note.gnu.build-iNOTE000000000040027400000274
00000000000000240000000000000000A004
[4].gnu.hashGNU_HASH000000000040029800000298
00000000000000300000000000000000A508
[5].dynsymDYNSYM00000000004002c8000002c8
00000000000001380000000000000018A618
[6].dynstrSTRTAB000000000040040000000400
00000000000001800000000000000000A001
[7].gnu.versionVERSYM000000000040058000000580
000000000000001a0000000000000002A502
[8].gnu.version_rVERNEED00000000004005a0000005a0
00000000000000400000000000000000A628
[9].rela.dynRELA00000000004005e0000005e0
00000000000000300000000000000018A508
[10].rela.pltRELA000000000040061000000610
00000000000000c00000000000000018A5128
[11].initPROGBITS00000000004006d0000006d0
000000000000001a0000000000000000AX004
[12].pltPROGBITS00000000004006f0000006f0
00000000000000900000000000000010AX0016
[13].textPROGBITS000000000040078000000780
00000000000001e40000000000000000AX0016
[14].finiPROGBITS000000000040096400000964
00000000000000090000000000000000AX004
[15].rodataPROGBITS000000000040097000000970
000000000000001c0000000000000000A008
[16].eh_frame_hdrPROGBITS000000000040098c0000098c
00000000000000440000000000000000A004
[17].eh_framePROGBITS00000000004009d0000009d0
00000000000001340000000000000000A008
[18].init_arrayINIT_ARRAY0000000000600dd800000dd8
00000000000000100000000000000000WA008
[19].fini_arrayFINI_ARRAY0000000000600de800000de8
00000000000000080000000000000000WA008
[20].jcrPROGBITS0000000000600df000000df0
00000000000000080000000000000000WA008
[21].dynamicDYNAMIC0000000000600df800000df8
00000000000002000000000000000010WA608
[22].gotPROGBITS0000000000600ff800000ff8
00000000000000080000000000000008WA008
[23].got.pltPROGBITS000000000060100000001000
00000000000000580000000000000008WA008
[24].dataPROGBITS000000000060105800001058
00000000000000040000000000000000WA004
[25].bssNOBITS00000000006010600000105c
00000000000001180000000000000000WA0032
[26].commentPROGBITS00000000000000000000105c
000000000000002c0000000000000001MS001
[27].shstrtabSTRTAB000000000000000000001088
00000000000001080000000000000000001
[28].symtabSYMTAB000000000000000000001910
00000000000006f0000000000000001829488
[29].strtabSTRTAB000000000000000000002000
000000000000039f0000000000000000001
KeytoFlags:
W(write),A(alloc),X(execute),M(merge),S(strings),l(large)
I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)
O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

(8)查看一個包含調(diào)試信息的可執(zhí)行的 ELF 文件的節(jié)頭信息。

readelf-Smain.debug.out
Thereare35sectionheaders,startingatoffset0x3928:

SectionHeaders:
[Nr]NameTypeAddressOffset
SizeEntSizeFlagsLinkInfoAlign
[0]NULL000000000000000000000000
00000000000000000000000000000000000
[1].interpPROGBITS000000000040023800000238
000000000000001c0000000000000000A001
[2].note.ABI-tagNOTE000000000040025400000254
00000000000000200000000000000000A004
[3].note.gnu.build-iNOTE000000000040027400000274
00000000000000240000000000000000A004
[4].gnu.hashGNU_HASH000000000040029800000298
00000000000000300000000000000000A508
[5].dynsymDYNSYM00000000004002c8000002c8
00000000000001380000000000000018A618
[6].dynstrSTRTAB000000000040040000000400
00000000000001800000000000000000A001
[7].gnu.versionVERSYM000000000040058000000580
000000000000001a0000000000000002A502
[8].gnu.version_rVERNEED00000000004005a0000005a0
00000000000000400000000000000000A628
[9].rela.dynRELA00000000004005e0000005e0
00000000000000300000000000000018A508
[10].rela.pltRELA000000000040061000000610
00000000000000c00000000000000018A5128
[11].initPROGBITS00000000004006d0000006d0
000000000000001a0000000000000000AX004
[12].pltPROGBITS00000000004006f0000006f0
00000000000000900000000000000010AX0016
[13].textPROGBITS000000000040078000000780
00000000000001e40000000000000000AX0016
[14].finiPROGBITS000000000040096400000964
00000000000000090000000000000000AX004
[15].rodataPROGBITS000000000040097000000970
000000000000001c0000000000000000A008
[16].eh_frame_hdrPROGBITS000000000040098c0000098c
00000000000000440000000000000000A004
[17].eh_framePROGBITS00000000004009d0000009d0
00000000000001340000000000000000A008
[18].init_arrayINIT_ARRAY0000000000600dd800000dd8
00000000000000100000000000000000WA008
[19].fini_arrayFINI_ARRAY0000000000600de800000de8
00000000000000080000000000000000WA008
[20].jcrPROGBITS0000000000600df000000df0
00000000000000080000000000000000WA008
[21].dynamicDYNAMIC0000000000600df800000df8
00000000000002000000000000000010WA608
[22].gotPROGBITS0000000000600ff800000ff8
00000000000000080000000000000008WA008
[23].got.pltPROGBITS000000000060100000001000
00000000000000580000000000000008WA008
[24].dataPROGBITS000000000060105800001058
00000000000000040000000000000000WA004
[25].bssNOBITS00000000006010600000105c
00000000000001180000000000000000WA0032
[26].commentPROGBITS00000000000000000000105c
000000000000002c0000000000000001MS001
[27].debug_arangesPROGBITS000000000000000000001088
00000000000000300000000000000000001
[28].debug_infoPROGBITS0000000000000000000010b8
00000000000014f90000000000000000001
[29].debug_abbrevPROGBITS0000000000000000000025b1
000000000000039f0000000000000000001
[30].debug_linePROGBITS000000000000000000002950
00000000000002410000000000000000001
[31].debug_strPROGBITS000000000000000000002b91
0000000000000c4e0000000000000001MS001
[32].shstrtabSTRTAB0000000000000000000037df
00000000000001480000000000000000001
[33].symtabSYMTAB0000000000000000000041e8
0000000000000768000000000000001834538
[34].strtabSTRTAB000000000000000000004950
000000000000039f0000000000000000001
KeytoFlags:
W(write),A(alloc),X(execute),M(merge),S(strings),l(large)
I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)
O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

可見,相對非調(diào)試版本的可執(zhí)行文件,多了些".debug*"節(jié)的信息。

(9)查看一個目標文件的 ELF 文件的節(jié)頭信息。

readelf-Sprint.o
Thereare15sectionheaders,startingatoffset0x1e8:

SectionHeaders:
[Nr]NameTypeAddressOffset
SizeEntSizeFlagsLinkInfoAlign
[0]NULL000000000000000000000000
00000000000000000000000000000000000
[1].textPROGBITS000000000000000000000040
00000000000000740000000000000000AX004
[2].rela.textRELA000000000000000000000900
000000000000010800000000000000181318
[3].dataPROGBITS0000000000000000000000b4
00000000000000000000000000000000WA004
[4].bssNOBITS0000000000000000000000b4
00000000000000010000000000000000WA004
[5].rodataPROGBITS0000000000000000000000b4
00000000000000080000000000000000A001
[6].init_arrayINIT_ARRAY0000000000000000000000c0
00000000000000080000000000000000WA008
[7].rela.init_arrayRELA000000000000000000000a08
000000000000001800000000000000181368
[8].commentPROGBITS0000000000000000000000c8
000000000000002d0000000000000001MS001
[9].note.GNU-stackPROGBITS0000000000000000000000f5
00000000000000000000000000000000001
[10].eh_framePROGBITS0000000000000000000000f8
00000000000000780000000000000000A008
[11].rela.eh_frameRELA000000000000000000000a20
0000000000000048000000000000001813108
[12].shstrtabSTRTAB000000000000000000000170
00000000000000720000000000000000001
[13].symtabSYMTAB0000000000000000000005a8
0000000000000210000000000000001814138
[14].strtabSTRTAB0000000000000000000007b8
00000000000001450000000000000000001
KeytoFlags:
W(write),A(alloc),X(execute),M(merge),S(strings),l(large)
I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)
O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

(10)查看一個靜態(tài)庫文件的 ELF 文件的節(jié)頭信息。

readelf-Slibprint.a

File:libprint.a(print.o)
Thereare15sectionheaders,startingatoffset0x1e8:

SectionHeaders:
[Nr]NameTypeAddressOffset
SizeEntSizeFlagsLinkInfoAlign
[0]NULL000000000000000000000000
00000000000000000000000000000000000
[1].textPROGBITS000000000000000000000040
00000000000000740000000000000000AX004
[2].rela.textRELA000000000000000000000900
000000000000010800000000000000181318
[3].dataPROGBITS0000000000000000000000b4
00000000000000000000000000000000WA004
[4].bssNOBITS0000000000000000000000b4
00000000000000010000000000000000WA004
[5].rodataPROGBITS0000000000000000000000b4
00000000000000080000000000000000A001
[6].init_arrayINIT_ARRAY0000000000000000000000c0
00000000000000080000000000000000WA008
[7].rela.init_arrayRELA000000000000000000000a08
000000000000001800000000000000181368
[8].commentPROGBITS0000000000000000000000c8
000000000000002d0000000000000001MS001
[9].note.GNU-stackPROGBITS0000000000000000000000f5
00000000000000000000000000000000001
[10].eh_framePROGBITS0000000000000000000000f8
00000000000000780000000000000000A008
[11].rela.eh_frameRELA000000000000000000000a20
0000000000000048000000000000001813108
[12].shstrtabSTRTAB000000000000000000000170
00000000000000720000000000000000001
[13].symtabSYMTAB0000000000000000000005a8
0000000000000210000000000000001814138
[14].strtabSTRTAB0000000000000000000007b8
00000000000001450000000000000000001
KeytoFlags:
W(write),A(alloc),X(execute),M(merge),S(strings),l(large)
I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)
O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

(11)查看一個動態(tài)庫文件的 ELF 文件的節(jié)頭信息。

readelf-Slibprint.so
Thereare28sectionheaders,startingatoffset0x1170:

SectionHeaders:
[Nr]NameTypeAddressOffset
SizeEntSizeFlagsLinkInfoAlign
[0]NULL000000000000000000000000
00000000000000000000000000000000000
[1].note.gnu.build-iNOTE00000000000001c8000001c8
00000000000000240000000000000000A004
[2].gnu.hashGNU_HASH00000000000001f0000001f0
000000000000003c0000000000000000A308
[3].dynsymDYNSYM000000000000023000000230
00000000000001e00000000000000018A428
[4].dynstrSTRTAB000000000000041000000410
00000000000001ab0000000000000000A001
[5].gnu.versionVERSYM00000000000005bc000005bc
00000000000000280000000000000002A302
[6].gnu.version_rVERNEED00000000000005e8000005e8
00000000000000400000000000000000A428
[7].rela.dynRELA000000000000062800000628
00000000000001200000000000000018A308
[8].rela.pltRELA000000000000074800000748
00000000000000900000000000000018A3108
[9].initPROGBITS00000000000007d8000007d8
000000000000001a0000000000000000AX004
[10].pltPROGBITS000000000000080000000800
00000000000000700000000000000010AX0016
[11].textPROGBITS000000000000087000000870
00000000000001740000000000000000AX0016
[12].finiPROGBITS00000000000009e4000009e4
00000000000000090000000000000000AX004
[13].rodataPROGBITS00000000000009ed000009ed
00000000000000080000000000000000A001
[14].eh_frame_hdrPROGBITS00000000000009f8000009f8
000000000000002c0000000000000000A004
[15].eh_framePROGBITS0000000000000a2800000a28
00000000000000a40000000000000000A008
[16].init_arrayINIT_ARRAY0000000000200da800000da8
00000000000000100000000000000000WA008
[17].fini_arrayFINI_ARRAY0000000000200db800000db8
00000000000000080000000000000000WA008
[18].jcrPROGBITS0000000000200dc000000dc0
00000000000000080000000000000000WA008
[19].data.rel.roPROGBITS0000000000200dc800000dc8
00000000000000080000000000000000WA008
[20].dynamicDYNAMIC0000000000200dd000000dd0
00000000000001f00000000000000010WA408
[21].gotPROGBITS0000000000200fc000000fc0
00000000000000400000000000000008WA008
[22].got.pltPROGBITS000000000020100000001000
00000000000000480000000000000008WA008
[23].bssNOBITS000000000020104800001048
00000000000000080000000000000000WA004
[24].commentPROGBITS000000000000000000001048
000000000000002c0000000000000001MS001
[25].shstrtabSTRTAB000000000000000000001074
00000000000000f90000000000000000001
[26].symtabSYMTAB000000000000000000001870
0000000000000600000000000000001827468
[27].strtabSTRTAB000000000000000000001e70
00000000000003350000000000000000001
KeytoFlags:
W(write),A(alloc),X(execute),M(merge),S(strings),l(large)
I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)
O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

責任編輯:xj

原文標題:每天一個 Linux 命令(97):readelf 命令

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11681

    瀏覽量

    218568
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    747

    瀏覽量

    23557
  • ELF文件
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7408

原文標題:每天一個 Linux 命令(97):readelf 命令

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    淘寶SKU詳細信息API接口的探索之旅

    ??SKU詳細信息的重要性 SKU詳細信息包括商品的價格、庫存、規(guī)格(如顏色、尺寸)、銷售狀態(tài)等。這些信息對于商家進行庫存管理、價格策略制定、市場分析等都有著重要作用。 淘寶API接口概述 淘寶開放
    的頭像 發(fā)表于 11-11 11:27 ?220次閱讀

    京東商品詳情 ID(即 SKU ID)獲取商品詳細信息參數(shù)

    ? 利用京東商品詳情 ID(即 SKU ID)獲取商品詳細信息,可通過京東開放平臺官方 API 或非官方接口(逆向解析)實現(xiàn)。以下是兩種方式的示例展示,包含代碼實現(xiàn)與數(shù)據(jù)解析: 一、核心概念:京東
    的頭像 發(fā)表于 11-11 10:47 ?629次閱讀
    京東商品詳情 ID(即 SKU ID)獲取商品<b class='flag-5'>詳細信息</b>參數(shù)

    飛凌嵌入式ElfBoard-Linux系統(tǒng)基礎(chǔ)入門-其它shell命令

    示例:PS查詢進程命令命令:ps功能:顯示當前操作系統(tǒng)中由該用戶運行的進程列表常見參數(shù):-u 查看進程所有者及其詳細信息-x 顯示沒有控制終端的進程-e 顯示所有進程-l PPID.PID等
    發(fā)表于 10-11 08:42

    飛凌嵌入式ElfBoard-Linux系統(tǒng)基礎(chǔ)入門-文件操作相關(guān)shell命令

    -v顯示詳細處理信息-C轉(zhuǎn)到指定目錄,一般用于解壓文檔-j調(diào)用bzip2程序-z調(diào)用gzip程序-Z調(diào)用compress程序--exclude=PATH排除指定目錄,用于打包
    發(fā)表于 09-30 09:46

    技術(shù)貼|【RK3588】ELF 2開發(fā)板如何添加exFAT和NTFS文件系統(tǒng)格式

    基于RK3588設(shè)計的ELF2開發(fā)板在搭載Desktop22.04系統(tǒng)時,對TF卡的文件系統(tǒng)支持存在以下限制:不支持exFAT格式;支持NTFS格式,但需手動掛載;針對上述兼容性問題,
    的頭像 發(fā)表于 08-27 17:21 ?3369次閱讀
    技術(shù)貼|【RK3588】<b class='flag-5'>ELF</b> 2開發(fā)板如何添加exFAT和NTFS<b class='flag-5'>文件</b>系統(tǒng)<b class='flag-5'>格式</b>

    NCS放大器DAD3350詳細信息

    ? NCS放大器DAD3350詳細信息 ? ? 產(chǎn)品概述 ? ? 型號 ?:DAD3350 ? 品牌 ?:NCS ? 應用領(lǐng)域 ?:主要用于半導體劃片機(如DISCO DAD3350系列)的信號放大
    的頭像 發(fā)表于 07-12 09:31 ?692次閱讀

    如何利用京東商品詳情id拿到商品的詳細信息 示例展示

    利用京東商品詳情 ID(即 SKU ID)獲取商品詳細信息,可通過京東開放平臺官方 API 或非官方接口(逆向解析)實現(xiàn)。以下是兩種方式的示例展示,包含代碼實現(xiàn)與數(shù)據(jù)解析: 一、核心概念:京東商品
    的頭像 發(fā)表于 07-10 09:37 ?1241次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)之設(shè)置時區(qū)

    12:07:16 +0800輸入命令:root@ELF1:~# dateMon Mar 15 12:07:40 CST 2021可以看到當前時區(qū)是UTC+8:00,ELF 1開發(fā)板的文件
    發(fā)表于 06-25 14:08

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)常用命令之磁盤管理與維護常用命令

    一、df:查看系統(tǒng)已用空間df命令用于顯示linux系統(tǒng)中各文件系統(tǒng)的硬盤使用情況。包括文件系統(tǒng)所在硬盤分區(qū)的總?cè)萘俊⒁咽褂玫娜萘?、剩余容量等。用法:df [OPTION]... [
    發(fā)表于 06-24 11:26

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)常用命令之內(nèi)核模塊管理工具

    、modinfo 查看某個模塊的詳細信息root@ELF1:~# modinfo 8723du五、rmmod 卸載某個已經(jīng)安裝的模塊例如,卸載8723du模塊:root@ELF1:~# rmmod 8723du六、top
    發(fā)表于 06-23 16:13

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)常用命令之系統(tǒng)管理與設(shè)置常用命令

    一、查看系統(tǒng)內(nèi)核版本通過查看/proc/version文件,可獲得系統(tǒng)內(nèi)核版本信息:root@ELF1:~# cat /proc/versionLinux version
    發(fā)表于 06-23 16:12

    飛凌嵌入式ElfBoard ELF 1板卡-uboot常用命令文件系統(tǒng)命令

    uboot支持fat格式、ext格式文件系統(tǒng)。我們主要講解fat格式文件系統(tǒng)常用命令使用。 一、fatinfo fatinfo顯示選中的m
    發(fā)表于 05-26 17:32

    ESI文件詳解:讓EtherCAT網(wǎng)絡配置更智能!

    EtherCAT從站信息(ESI)文件是一種標準化的XML格式文檔,專門用于描述EtherCAT從站的特性和配置。它提供了所有必要的詳細信息
    的頭像 發(fā)表于 05-09 17:39 ?2215次閱讀
    ESI<b class='flag-5'>文件</b>詳解:讓EtherCAT網(wǎng)絡配置更智能!

    請問DLP5530PGUQ1EVM所輸出的bin格式文件如何生成?

    bin格式文件。請問這里可以通過程序?qū)氲腷in格式文件如何生成?有特殊的格式要求嗎?直接將圖片轉(zhuǎn)換的bin文件會顯示Invalid Fl
    發(fā)表于 02-25 06:36

    Linux文件管理命令詳解

    cat命令描述:該命令用于連接文件并打印到標準輸出設(shè)備上。
    的頭像 發(fā)表于 02-17 10:34 ?998次閱讀
    Linux<b class='flag-5'>文件</b>管理<b class='flag-5'>命令</b>詳解