编译原理四部曲
从.c
文件到可执行文件的编译过程主要包括四个步骤,每个步骤都会生成特定的文件。以下是这四个步骤及其生成的文件:
- 预处理:
- 任务:处理源代码中的预处理指令,如
#include
、#define
等。 - 生成的文件:通常是一个后缀为
.i
的文件,这是一种中间代码文件,表明这些文件是经过预处理的[1][3][4]。
- 任务:处理源代码中的预处理指令,如
- 编译:
- 任务:将预处理过的代码进行词法分析和语法分析,生成中间代码,通常是汇编语言或与平台无关的中间代码。
- 生成的文件:通常是一个后缀为
.s
的汇编语言文件。这个文件是一个文本文件,包含由汇编指令组成的汇编代码。
- 汇编:
- 任务:将优化后的中间代码(汇编语言)转化为目标文件。
- 生成的文件:通常是一个后缀为
.o
或.obj
的二进制文件(称为目标文件)。这个文件包含了机器指令,但还未进行链接。
- 链接:
- 任务:将分散的目标文件和所需的库文件合并成一个可执行文件。
- 生成的文件:一个可执行文件。在Windows下,通常后缀为
.exe
;在Unix下,可能没有特定的扩展名。
这四个步骤共同完成了从.c
源文件到可执行文件的转换过程。其中,每个步骤都使用特定的工具(如预处理器、编译器、汇编器和链接器)来执行其特定的任务,并生成相应的文件作为输出。