我们来了解GCC是什么

    作者:课课家教育更新于: 2016-07-29 18:39:52

    大神带你学编程,欢迎选课

      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 编译动态库

      出错检查以及警告提示

       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充实自己的开发知识。

课课家教育

未登录