大体流程
源代码->预处理->编译->优化->汇编->链接->可执行文件
编译预处理:
读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理
编译阶段:
预编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
优化阶段:
优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。上图中,我们将优化阶段放在编译程序的后面,这是一种比较笼统的表示。
汇编过程:
把汇编语言代码或者中间代码翻译成目标机器指令。对于被翻译系统处理的每一个C语言源程序都将最终经过这一处理而得到相应的目标文件。
链接程序:
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。