ELF 文件格式 是一个开放标准,各种 UNIX 系统的可执行文件都采用 ELF 格式,它有三种不同的类型:
- 可重定位的目标文件(Relocatable,或者Object File)
- 可执行文件(Executable)
- 共享库(Shared Object,或者Shared Library)
在这里先详细解释一下程序的汇编、链接、运行过程:
1、写一个汇编程序保存成文本文件 max.s。
2、汇编器读取这个文本文件转换成目标文件 max.o,目标文件由若干个 Section 组成,我们在汇编程序中声明的 .section 会成为目标文件中的 Section,此外汇编器还会自动添加一些 Section(比如符号表)。
3、然后链接器把目标文件中的 Section 合并成几个 Segment,生成可执行文件 max。
4、最后加载器(Loader)根据可执行文件中的 Segment 信息加载运行这个程序。
ELF 格式提供了两种不同的视角,链接器把 ELF 文件看成是 Section 的集合,而加载器把 ELF 文件看成是 Segment