Linker and Loader(链接与加载)学习笔记---目标文件解析
目标文件格式
Windows:PE
Linux: ELF
都是COFF文件的变种
动态链接库,静态链接库,可执行文件均按照COFF格式存储。
ELF格式的文件可以归为下列四类:
可重定位文件 --- .o
可执行文件 --- .out
共享目标文件 --- .so
核心转储文件 --- 进程意外终止时,系统将进程地址空间内容与终止时的一些信息转储到核心转储文件
目标文件的内容
猜测:内容包括编译后的机器指令代码,数据,函数符号。
实际:还包括链接时需要的一些必要信息,如符号表,调试信息,字符串等。
一般目标文件将这些内容,以Section或Segement的形式存储。
两者在ELF装载或链接时加以区别。
程序编译后机器指令全部存储在代码段 (.text)全局变量与局部静态变量存储在数据段(.data)
.bss段为未初始化的的全局变量与局部静态变量预留位置,没有内容也不占用空间
程序段代码被编译后主要分为两种段:程序指令与程序数据。