我们来了解GCC是什么
当前位置:以往代写 > 其他教程 >我们来了解GCC是什么
2019-06-14

我们来了解GCC是什么

我们来了解GCC是什么

  GCC是GUN项目中的编译器组件之一,也是GUN最具有代表性的作品。在GCC刚刚设计之初只是仅仅作为一个C语言的编译器,但是GCC发展到现在,已经不仅仅只支持C语言了。他现在还支持的有C++、java、Objective C、COBOL语言,以及支持函数式编程和逻辑编程的Mercury语言等等并且成为了Linux下最总要的编译语言之一。下面我们来了解一下GCC的输入文件、基本语法等等。

     GCC简单介绍

      Gcc是GNU推出的多平台编译器,原名为GNU C Compiler,原来只是做C语言编译器,后来发展支持处理C++,继而可处理Fortran、Java、Pascal等语言,Gcc支持在多种硬体平台上编译可执行程序,目前,Gcc是Unix类操作系统的标准编译器。而GCC也不再单是GNU C  Compiler的意思,而是GNU Compiler  Collection也即是GNU编译器家族的意思了。

  GCC输入文件的约定

   GCC对于输入文件有以下的约定规则

后缀格式 说明
.c C语言程序
.a 由目标文件构成的档案文件
.C、cc、cxx C++源程序
.h 源程序所包含的头文件
.i 经过预处理的C程序
.ii 经过预处理的C++程序
.m Objective-C源程序
.o 编译后的目标文件
.s 汇编语言源程序
.S 经过预编译的汇编程序
 

   GCC是一组编译工具的总称,在GCC中的软件包中包含了众多的工具,主要有以下的分类:

   C编译器cc,cc1,cc1 plus,gcc

   C++编译器c++,cc1 plus,g++

   源代码预处理程序cpp,cpp0

   库文件libgcc.a,  libgcc_eh.a,libgcc_s.so,libiberty.a,libstdc++.[a,so],libsupc++.a

  GCC执行过程

   在使用GCC编译程序的时候看起来是只通过编译就可以完成但是GCC的执行过程包括预编译(Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)四个阶段。

   而在实际编译的时候GCC先会调用cpp命令进行预处理,接着调用CC1命令进行编译并生成汇编代码。汇编过程是针对汇编语言的步骤,调用as命令进行工作,生成扩展名为.o的目标文件,当所有的目标文件都生成之后,GCC就调用连接器ld来完成最后的关键性工作链接。

  GCC的基本语法

我们来了解GCC是什么_GCC介绍_GCC基本用法_编译语言_课课家

   在GCC中,最基本的语法格式是gcc [options] [filenames]

   其中,options是编译选项参数,而filenames是编译文件名。要注意的是如果编译的是C++就要使用c++/g++ [options] [filenames],而其它语言编译需要安装协议规范。

   [options]常用值如下(这里只是部分的):

-c 只编译不连接为可执行文件,最后只生成.o为后缀的目标文件
-ooutput_filename 设置编译输出文件名为output_filename,gcc预设的输出可执行文件名为a.out
-O 对程序进行优化编译、连接,提高目标程序的执行效率,影响编译速度
-O2 比-O更好的优化编译、连接,影响编译速度
-Idirname 为编译设置程序头文件目录列表,或者叫搜索路径,编译器会自动到该目录下查找所需的头文件。
-Ldirname 为编译设置库文件目录,或者叫库搜索路径,连接时,编译器会自动到该目录下查找。
-lname 要求编译器连接时装载名字为“libname.a”的函数库,注意名称,示例-lbb则表示libbb.a库。
-shared 编译动态库

  出错检查以及警告提示

#p#分页标题#e#

   GCC编译器中含有完整的出错检查以及警告提示功能,它提供了30多条的警示信息还有3个警告级别,使用这些有助于增强程序的稳定性和更加完善程序代码的设计。

  代码优化选项

   如何进行代码优化?编译器通过分析源代码找出其中没有代打最优的部分,对其进行重新的组合,这样就可以改善代码的执行能力。GCC通过提供编译选项-On 来控制优化代码的生成,使用代码优化选项可以大幅度提高代码在大型程序中的运行速度。

  编译实例

   编译C文件:#gcc test.c -o tst 编译test.c C文件,生成tst.o

   编译C++文件:#g++ Test.cpp -o tst 编译Test C++文件,生成tst.o

   添加外部库查找路径:#g++ -L/usr/local/MySQL/lib test.cpp -o tst

   程序用到了long long类型:#g++ -pedantic -Wno-long-long test.cpp -o tst

   引用外部头文件:#g++ -I/usr/include/mysql/ test.cpp -o tst

   引用带外部库:#g++ -lmysqlclient test.cpp -o tst

     在文中知识对GCC进行简单的了解,例如[options]常用值只是把其中的一部分放了上来帮助了解GCC而已,如果有需要的朋友可以在网上查找关于[options]常用值的全部描述。总的来说GCC编译器对于现在的编程还是很有用处的,所以大家可以去了解学习一下GCC充实自己的开发知识。

    关键字:

在线提交作业