标签:gcc
各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :GCC。闲话休提,言归正转。让我们
一起talk GCC吧!
看官们,我们常说的GCC是一个绰号,它真正的名字是:GNU Compiler Collection.中文叫作GNU编译
套件。因为这个绰号的名声太大了,所以大家都这么称呼它。GCC生于1987年,也是一个典型的80后。
它的父亲为美国人Richard Stallman。不过它没娘,可怜的孩子。
作为一款优秀的编译器,GCC可以支持常用的各种语言,比如C,C++等,还有现在流行的Objective-c。
而且它已经成为各种Linux发行版中默认的程序编译器。比如Ubuntun,ReadHat,BSD等。此外,GCC
也支持各种处理器架构,比如常见的X86架构,用于服务器的SPARC架构,以及用于嵌入式领域的ARM架
构。这么强大的GCC是开源的,因此你可以自由使用它。目前GCC还在不断的发展和升级。
看官们,我们介绍一下GCC的编译功能。GCC编译C或者C++程序时,是分阶段进行的。主要有4个阶段,
分别是:预处理,编译,汇编,链接。不过每个阶段都可以单独控制,如果觉得一步一步的操作麻烦,
也可以把各个阶段一气呵成,直接产生编译结果。当然了,如果想查看各个阶段的结果,使用GCC就方
便很多。下面我们分别介绍一下各个阶段的功能:
在该阶段GCC会叫一个名叫CPP的预处理器来完成该阶段的工作。该阶段主要做两件事情:处理预
编译语句和文件包含。预编译语句包含宏和条件编译,比如#define,#ifdef...#endif.文件包含就是
使用#include包含进来的各种头文件。该阶段会产生预处理后的文件,文件后缀为.i或者.ii。当然
了,后缀只是为了方便人们区分文件类型,对Linux来说有没有后缀都一样。
在该阶段GCC会叫一个名叫CCL的编译器来完成该阶段的工作。该阶段主要工作是会产生汇编语言源
文件,汇编语言源文件的后缀为.s。其实该阶段也是一个比较复杂的过程,该阶段会进行词法分析,
语法分析等工作,这个属于编译原理方面的内容,咱们就不多说了。感兴趣的看官们,可以自己研究
一下关于编译方面的知识。当然了,如果我有时间的话,也会和大家介绍编译方面的知识。
在该阶段GCC会叫一个名叫AS的汇编器来完成该阶段的工作,该阶段的主要工作是对上一阶段中产生
汇编语言文件进行汇编,汇编完成时会生成目标文件,目标文件的后缀为.o。当然了,不同的处理器
架构,目标文件的内容也不同。
在该阶段GCC会叫一个名叫LD的链接器来完成该阶段的工作。该阶段主要工作是把汇编生成的目标文
件和库文件进行链接,最后生成可执行的目标文件,目标文件后缀为.o。
看官们,GCC可以把这4个阶段一气呵成,直接生成可执行的目标文件。也可以使用不同的选项来控制每个
阶段的进行,以便检查各个阶段的产物。
看官们,关于GCC的内容,今天咱们就说这些。欲知后事如何,且听下回分解!
标签:gcc
原文地址:http://blog.csdn.net/talk_8/article/details/46580475