码迷,mamicode.com
首页 > 其他好文 > 详细

一起talk GCC吧((第一回:GCC介绍)

时间:2015-06-21 10:40:38      阅读:149      评论:0      收藏:0      [点我收藏+]

标签: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的内容,今天咱们就说这些。欲知后事如何,且听下回分解!


一起talk GCC吧((第一回:GCC介绍)

标签:gcc

原文地址:http://blog.csdn.net/talk_8/article/details/46580475

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!