GCC编译器

GCC(GUN Compiler Collection):GNU编译器套件。

1.GPL的诞生

   背景:长期以来,软件源码作为个人或公司的私有财产受到严格的保密,很难像文学艺术作品一样得到公开的交流。

      这样一来,造成软件的重复劳动,在一定意义上制约了软件的发展。

   诞生:直到1985年,Richard Stallman提出应将软件源码看成人类共同拥有的知识财富,应该公开的自由交换、修改。

      继而提出了GNU计划,并建立了自由软件基金会,同时发布了一份公共授权书(General Public License),即GPL。

   注:Stallman为了停止中间人对自由软件的侵害,提出了copyleft授权。

2.GCC的发展

   背景:GNU项目计划的主要目的是创建一个名叫GNU(GNU's Not Unix)的完全免费的操作系统,

      该操作系统将包括绝大多数自由软件基金会所开发的其他软件,以对抗所有商业软件.

      但是,GNU在这方面一直未取得成功,直到Torvalds开发出了Linux系统。

   诞生:GNU在操作系统上未取得成功,但成功开发出了几个广为流传的GNU软件,其中最出名的就是GCC。

   说明:GCC是历史上最优秀的C语言编译器,而且是copylefted,一旦有用户发现错误,就会通知Stallman,几乎每月都会更新版本。

      最重要的是,几乎所有自由软件都是通过它编译的,可以说,它是自由软件发展的基石和标杆。

   发展:GCC初期只支持C语言,目前支持Ada、C++、Java、Objective-C、Pascal、COBOL 以及函数式编程和逻辑编程的 Mercury 语言等。

3.GCC的使用

   GCC介绍:仅仅是一个编译器,没有界面,必须在命令行模式下使用,通过GCC命令就可以将源文件编译成可执行文件。

   检测是否安装:在类 Unix 操作系统中,打开命令提示符(终端),输入:cc --version,如果已经安装,会显示编译器的版本号和版权信息。

   生成可执行程序:

        cd demo:进入源文件所在的目录,demo为目录名。

        gcc main.c:编译源文件,main.c为源文件名。

          编译完成后,会在demo目录生成一个a.out的文件,这就是最终生成的可执行文件。

          可通过-o参数来自定义文件名,比如:gcc main.c -o main.out,这样生成的文件就是main.out。

          也可以通过-o将可执行文件输出到其它目录,例如:gcc main.c -o ./out/main.out。

   运行可执行程序:./a.out

          ./表示当前目录,整条命令的意思是运行当前目录下的a.out程序。

          如果程序在其他目录下,运行程序时要带上目录的名字,例如:./out/main.out。

   新建空白的源文件:touch main.c。

   编辑源文件:gedit main.c。

   分步骤编译:

          1.编译(compile):gcc -c main.c,结果:生成main.c文件。

          2.链接(link):gcc main.o

  GCC编译流程:   

  1. 将C语言源程序预处理,生成.i文件。
  2. 预处理后的.i文件编译成为汇编语言,生成.s文件。
  3. 将汇编语言文件经过汇编,生成目标文件.o文件。
  4. 将各个模块的.o文件链接起来生成一个可执行程序文件。

     

posted @ 2019-07-03 17:03  benon  阅读(369)  评论(0编辑  收藏  举报