编译过程
process
- 预编译(预编译器处理如 #include、#define 等预编译指令,生成 .i 或 .ii 文件)
- 编译(编译器进行词法分析、语法分析、语义分析、中间代码生成、目标代码生成、优化,生成 .s 文件)
- 汇编(汇编器把汇编码翻译成机器码,生成 .o 文件)
- 链接(连接器进行地址和空间分配、符号决议、重定位,生成 .out 文件)
目标文件存储格式
段 | 功能 |
---|---|
File Header | 文件头,描述整个文件的文件属性(包括文件是否可执行、是静态链接或动态连接及入口地址、目标硬件、目标操作系统等) |
.text section | 代码段,执行语句编译成的机器代码 |
.data section | 数据段,已初始化的全局变量和局部静态变量 |
.bss section | BSS 段(Block Started by Symbol),未初始化的全局变量和局部静态变量(因为默认值为 0,所以只是在此预留位置,不占空间) |