本文主要讲述了一个C程序从源代码到目标文件所经过的步骤,介绍了编译系统,预处理、编译、汇编和链接的相关知识。
一、编译系统
一个C程序的生命周期从高级C语言程序开始。想要在系统上执行.c程序,每条C语句都必须翻译为低级的机器语言指令,将这些指令按照可执行目标程序的格式打包,以二进制磁盘文件的形式存放,这就是可以由系统执行的可执行目标文件。这些工作包含如下图所示的四个过程,由编译系统完成。
一般而言,编译系统包括预处理器、编译器、汇编器和链接器。
注意一下上图中各个阶段输出的文件格式是文本文件还是二进制文件。
1.预处理阶段
源代码.c文件和相关的头文件如stdio.h等被预处理器编译为一个.i文件。
预处理过程主要处理那些源代码文件中的以#开头的预处理指令。主要规则如下:
a.删除所有的#