赞
踩
阅读了很多关于GCC的文章,对他的介绍大体一致,总结如下:Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬件平台上编译出可执行程序的超级编译器,其执行效率与一般编译器相比,平均效率要搞20%~30%。嗯,很官方很专业。
作为一个C++开发者来说,使用gcc应该算是必备的基础技能,个人认为熟悉以下两部分就对这块内容基本掌握了。
gcc对C/C++语言的编译过程可分为4各阶段:预处理(Preprocess)、编译(Compilation)、汇编(Assembly)和链接(Linking)。执行过程见下图:
C预处理简称CPP,是对源程序中的伪指令(以#开头的指令)和特殊符号进行处理的过程。也就是解释宏定义和处理包含文件等操作,最终生成.i格式的文件。
编译的过程就是把预处理完的文件,进行一系列词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件,即.s格式的文件。
将汇编代码转变为机器可以执行的二进制代码,每一个汇编语句都对应一条机器指令,最终生成.o格式的文件。
在成功汇编之后,就进入了链接阶段。该阶段主要是解决多个文件之间符号引用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。