C语言的编译过程分为四个阶段:预处理、编译、汇编链接,其过程如下图所示,其中hello.c是一个输出字符串“hello world”的C程序。
- 预处理阶段:预处理器(cpp)根据以字符#开头的命令,修改原始的C程序,得到一个新的C程序,保存为预编译文件,以.i作为文件扩展名。
- 编译阶段:编译器(ccl)将预编译文件转换成汇编语言程序,保存为汇编文件,文件扩展名为.s。
- 汇编阶段:汇编器(as)将汇编文件转换为机器码,生成可重定位目标文件,文件扩展名为.o,这是一个二进制文件。
- 链接阶段:链接器(ld)将多个目标文件及所需要的库连接成最终的可执行目标文件,这也是二进制文件。