• 1.摘要
  • 2.基本信息
  • 3.发展历程
  • 4.主要功能
  • 4.1.执行过程
  • 4.2.执行过程示例
  • 5.操作指南
  • 5.1.安装方法
  • 5.2.使用技巧
  • 6.结构参数
  • 6.1.前端接口
  • 6.2.中介接口
  • 6.3.后端接口
  • 7.基本规则
  • 8.语言支持
  • 9.处理器架构
  • 10.程序除错
  • 11.版本发布
  • 12.参考资料

gcc

2
GNU编译器套件

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器1。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由2

GCC有很多编译选项,按照不同选项的功能划分,可以分为调试代码、对目标文件进行优化、检查代码质量。对于C语言源代码文件,使用GCC生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)1

基本信息

  • 简写

      gcc

  • 开发商

    Free Software Foundation(自由软件基金会)

  • 更新时间

    2019-02-22

  • 软件语言

    多国语言

  • 外文名

    GNU Compiler Collection

发展历程

GNU编译器套件

GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等,并已被移植到其他多种硬件平台。

GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)3

主要功能

在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。

GCC最基本的用法是∶gcc [options] [filenames]

其中options就是编译器所需要的参数,filenames给出相关的文件名称。

-c,只编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。

-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。

-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。

-O2,比-O更好的优化编译、链接,当然整个编译、链接过程会更慢。

-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶

A)#include <myinc.h>

B)#include “myinc.h”

其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。

-v gcc执行时执行的详细过程,gcc及其相关程序的版本号

原版gcc manual该选项英文解释