Java虚拟机ART 读书笔记 第4章 深入理解ELF文件格式

深入理解Android:Java虚拟机ART 读书笔记 以下内容均来自书中内容 建议看原书哦

ELF是Executable and Linkable Format的缩写,它是Unix(包括Linux这样的类Unix)平台上最通用的二进制文件格式。

c/.c++文件编译后得到的.o(或.obj)文件就是ELF文件。动态库.so文件是ELF文件。.o文件和.so文件链接后得到的二进制可执行文件也是ELF文件。

.oat是一种定制化的ELF文件,所以EFL文件是oat文件的基础,但是oat文件包含的内容和art虚拟机密切相关。

4.1 ELF文件格式介绍

ELF是Executable andLinkable Format的缩写。其名称中的“Executable”和“Linkable”表明ELF文件有两种重要的特性。

Executable:可执行。ELF文件将参与程序的执行(Execution)工作。包括二进制程序的运行以及动态库.so文件的加载。

Linkable:可链接。ELF文件是编译链接工作的重要参与者。

Linking View:链接视图,它是从编译链接的角度来观察一个ELF文件应该包含什么内容。

Execution View:执行视图,它是从执行的角度(可执行文件或动态库文件)来观察一个ELF文件应该包含什么信息。

4.1.1 ELF文件头结构介绍

ELF文件头结构前16个字节由e_ident数组描述。

  • e_ident[0-3]:前4个元素构成魔幻数(MagicNumber),取值分别为'0x7f'、'E'、'L'、'F'。
  • e_ident[EL_CLASS=4]:该元素表示ELF文件是32位ELF文件(取值为1)还是64位ELF文件(取值为2)。
  • e_ident[EL_DATA=5]:该元素表示ELF文件的数据的字节序是小端(Little Endian,取值为1)还是大端(Big Endian,取值为2)。
  • e_ident[EL_VERSION=6]:ELF文件版本,正常情况下该元素取值为1。
  • e_ident其余元素为字节对齐用。

todo:elf的东西太多了枯燥,以后再看吧

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Godams

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值