ELF文件

在windows系统上可执行文件都是.exe格式的,我们再看看main的文件格式是什么
还是ELF文件,不过它与之前的main.o多了dynamically linked和后面的一些内容
ELF文件
wiki对ELF的解释

可执行与可链接格式 (英语:Executable and Linkable Format,缩写为ELF),常被称为ELF格式

在《LinuxC编程一站式学习》中对ELF文件解释是这样的
ELF文件
总结一下ELF文件格式其实就是Linux中可执行文件的统一格式(相比于Windows中的.exe文件)
ELF的文件格式是这样的,
ELF文件

先不看左右的内容,从上往下看依次是ELF header,program header table … section header table…
ELF header存储着体系结构和操作系统等基本信息,并指出Section Header Table 和 Program Header Table在文件中的什么位置。

实际上ELF文件格式提供了两种不同的视角,左右就是从不同视角来看ELF文件。
我们先看右边的内容,在加载器(Loader)看来,ELF是由program header table描述的一系列segments的集合,section header table在加载时没有用到,所以是可有可无的
而左边就是从汇编器和链接器的视角来看这个文件,ELF是由多个section组成的,Program Header Table在编译和链接时没有用到,同样是可有可无的

再往下分析就涉及到汇编的知识了,我没学过,就不写了。