relocatable object file:
编译(不链接)生成relocatable object file. 为了之后能够正确的链接,.o文件需要包含以下信息:
(1)执行代码.text section
(2)数据,此时只处理全局数据(局部变量位于stack上),分为已经初始化的.data section和未初始化的.bss section以及只读.rodata section。
(3)定义符号和引用的符号的信息,符号表.symtab section。symbol的name的字符串保存在其他section即.strtab中。
(4)帮助linker把若干个relocatable object file(以及库文件)组织成一个可以被加载的image的relocation information,即.rel.text, .rel.data
(5).o文件中还会内嵌平台相关信息给linker, 因为编译器非常了解目标平台而linker没有那么知道target的信息。
elf文件格式:
elf header