GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。
Gcc的编译流程分为了四个步骤,分别为:
- 预处理(Pre-Processing):处理关于 “#” 的指令,可以说#号就是预处理的标志。编译器将代码中的stdio.h等.h文件编译进来。
用户可以使用Gcc的选项”-E”进行查看,该选项的作用是让Gcc在预处理结束后停止编译过程。 - 编译(Compiling):1.扫描(词法分析),2.语法分析,3.语义分析,4.源代码优化(中间语言生成),5.代码生成,目标代码优化。在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。
用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。 - 汇编(Assembling):是将汇编代码转变成可以执行的指令,生成 目标文件。汇编阶段是把编译阶段生成的”.s”文件转成目标文件,读者在此可使用选项”-c”就可看到汇编代码已转化为”.o”的二进制目标代码了。
- 链接(Linkingÿ