300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > elf文件格式_elf文件 readelf

elf文件格式_elf文件 readelf

时间:2018-09-16 20:39:16

相关推荐

elf文件格式_elf文件 readelf

汽车电子开发过程中,代码完成后,程序编译完成 会生成 elf文件 或 hex文件,可以烧录到MCU中调试,那么究竟什么是 elf文件呢? elf 文件中又包含哪些信息? 如何解析 elf文件呢?

1. What is elf file

ELF(Executable and Linking Format),elf文件是 Linux下定义的一种文件格式。

elf Bible,Linux Standard Base 定义如下 。文末放链接。

1.1 elf type

广义上 elf文件 不止包含后缀为elf的 *.elf 文件

ELF文件有三种类型:

可重定位的对象文件(Relocatable file)

.o文件是 由汇编器汇编生成的对象文件,里面包含的内容就是01这样的机器可执行的指令,当程序要执行时还需要进行链接(link).链接就是把多个.o文件链成一个可执行文件。

.a 文件,.a文件是多个.o文件的组合。

可执行的对象文件(Executable file)可执行应用程序
嵌入式中 .elf文件, 后缀为elf的文件

Windows 下的 .exe

可被共享的对象文件(Shared object file)动态库文件,也即 .so 文件

1.2 how generate elf file

编译过程:

>预编译 >

>编译 >

>汇编 >

>link -生成 elf

1.3 elf 结构

ELF文件由4部分组成,分别是ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。

ELF头部(ELF_Header): 每个ELF文件都必须存在一个ELF_Header,这里存放了很多重要的信息用来描述整个文件的组织,如: 版本信息,入口信息,偏移信息等。程序执行也必须依靠其提供的信息。程序头部表(Program_Header_Table): 可选的一个表,用于告诉系统如何在内存中创建映像,在图中也可以看出来,有程序头部表才有段,有段就必须有程序头部表。其中存放各个段的基本信息(包括地址指针)。节区头部表(Section_Header_Table): 类似与Program_Header_Table,但与其相对应的是节区(Section)。节区(Section): 将文件分成一个个节区,每个节区都有其对应的功能,如符号表,哈希表等。段(Segment): 嗯…就是将文件分成一段一段映射到内存中。段中通常包括一个或多个节区

2. readelf

readelf命令是gcc中的分析ELF文件的命令,安装MINGW后,会在其目录中发现 readelf.exeIn cmd window,>> readelf -h Enter,then command windown echo all usageUsage: readelf <option(s)> elf-file(s)readelf --a file.elf >Info.txtShow all info, it is equivalent to: -h -l -S -s -r -d -V -A -I>Info.txt can help user print information to txt file in current directory用该命令可以读出 elf 中所有信息

Refernce:

Linux Standard Base Linux标准库中 elf 官方文档

/elf/elf.pdf​

声明: 文章源于作者个人兴趣研究,只包含领域内公共信息,不包含任何商业信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。