1.预编译:
步骤:
(1)处理#开头的指令,比如#define、#if、#ifdef,其中不包含#pragma
(2)删除所有的注释
(3)添加行号文件标识
文件转换:.c->.i
2.编译:
步骤:
(1)词法分析
(2)语法分析
(3)语义分析
(4)源代码优化
(5)代码生成
(6)目标代码优化
文件转换:.i->.s
3.汇编:
步骤:
(1)将汇编代码转成机器可以执行的指令,生成可重定向目标文件
文件转换:
Windows:.s->.obj
Linux:.s->.o
4.链接:
步骤:
(1)将所有的.o文件段合并,其中符号表合并后会进行符号解析
(2)地址空间和分配
(3)符号的重定向
文件转换:
Windows下:obj->.exe
Linux下:.o->.out