基本步骤
预处理 -> 编译 -> 汇编 -> 链接
预编译:将源文件hello.c
和相关的头文件被预编译器编译成一个hello.ii
文件(c语言的话.c
文件预编译成.i
文件)
- 将#define 删除,展开所有的宏定义
- 处理条件预编译指令,把包含的文件插入到预编译指令的位置(递归的过程)
- 删除注释
- 添加行号,文件名标示
- 保留#progma编译器指令
编译:把预处理完的文件进行一系列的词法分析、语法分析以及优化后生成相应的汇编代码文件。
汇编:汇编器将汇编代码转为机器可以执行的指令。每个汇编语句都对应一个机器指令。其实就是将.c
文件转换为.o
目标文件。
链接:得到.out
文件。用符号来实现。当一个程序很复杂的时候,我们把每个源代码模块独立的编译,然后按照要求进行“组装”,这个组装的过程就是链接。
编译器
将高级语言翻译成机器语言的工具。
步骤:
扫描-> 语法分析 -> 语义分析 -> 源代码优化 -> 代码生成 -> 目标文件优化
链接
定义:当一个程序很复杂的时候,我们把每个源代码模块独立的编译,