一、GCC编译器介绍
GCC是一个交叉平台的编译器,目前支持几乎所有主流CPU处理器平台,它可以完成从C、C++、Objective C等源文件向运行在特定cpu硬件上的目标代码的转换,GCC不仅功能非常强大,结构也异常灵活,便携性(protable)与跨平台支持(cross-plantform. support)特性是GCC的显着优点,目前编译器所能支持的源程序的格式如下表所示。
GCC所支持的源程序格式
后缀格式 |
说明 |
.c |
C语言程序 |
.a |
由目标文件构成的档案文件 |
.C、cc、cxx |
C++源程序 |
.h |
源程序所包含的头文件 |
.i |
经过预处理的C程序 |
.ii |
经过预处理的C++程序 |
.m |
Objective-C源程序 |
.o |
编译后的目标文件 |
.s |
汇编语言源程序 |
.S |
经过预编译的汇编程序 |
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编译工具由C语言源程序生成可执行文件的过程并不单单是一个编译的过程,而要经过下面的几个过程。
预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)
在实际编译的时候,GCC首先调用cpp命令进行预处理,主要实现对源代码编译前的玉处理,比如将源代码中指定的头文件包含进来。接着调用cc1命令进行编译,作为整个编译过程的一个中间步骤,该过程会将源代码翻译生成汇编代码。汇编过程是针对汇编语言的步骤,调用as命令进行工作,生成扩展名为.o的目标文件,当所有的目标文件都生成之后,GCC就调用连接器ld来完成最后的关键性工作——链接。
GCC编译选项解析
GCC是Linux下基于命令行的C语言编译器,其基本的使用语法如下。