首页 > 代码库 > GCC编译器

GCC编译器

GCC是GNU项目的编译器,是GNU最具代表性的作品。GCC设计之初是专门用于C程序的编译器,展开叫做GNU C Compiler。经过数十年的发展,如今的GCC现在已经支持编译多种语言,像C、C++、Objective-C、JAVA、Fortran等等,是GNU  Compiler Collection。当我们用gcc命令编译的时候,它会根据文件的后缀名自动的选择相应的编译器。GCC种包含以下常见命令:

  • C编译器:cc、gcc
  • C++编译器:c++、g++
  • 源代码预处理器:cpp

注意:1.cc是Unix下的编译器,gcc是Linux下的编译器。用Unix编写的程序都用cc编译,故其Makefile文件中的编译命令为cc。Linux为了兼容Unix的命令,在linux下用cc其实并不是用的Unix下的编译器,而是gcc编译器的链接,故用gcc和cc都是一样的。

           2.g++和gcc两个命令,当源文件后缀是.c,gcc按C语言来编译,g++按c++程序编译,当后缀是.cpp时,gcc和g++都将其作为c++程序编译。除此之外,gcc不能链接C++程序的库,故当链接时C++程序必须要用g++来链接。而用g++编译的时候,实际上用的还是gcc编译。

一、程序的编译过程

当我们用编译命令将一个源程序文件编写成可执行文件的时候,实际上分为下面4步:

  • 预处理     将源文件中包含的头文件插入进来,进行宏替换等等,最终生成预处理后的文件。
  • 编译     将上一步生成的预处理后的文件,编译生成汇编代码。
  • 汇编     根据汇编代码,调用as程序,将相应的汇编代码生成机器代码,即计算机能够直接运行的二进制.o文件。
  • 链接     将多个.o文件和程序中用到的库文件通过连接器进行连接,生成最终的可执行文件。

二、GCC编译命令

假设源文件为test.c。

 

GCC编译器