GCC-维基百科
GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。
GCC原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java,以及Ada与其他语言。
目录 [隐藏]
1 概观
2 目前支持的语言
2.1 内嵌OpenMP支持
3 支持的处理器架构
4 结构
4.1 前端界面
4.2 中介界面
4.3 后端界面
5 替GCC程序除错
6 参考书目及注释
7 参阅
8 更多阅读
9 外部链接
概观
GCC是由理查德·马修·斯托曼在1985年开始的。他首先扩增一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的。Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言。为了让自由软件有一个编译器,后来此编译器由斯托曼和Len Tower在1987年[1]以C语言重写[2]并成为GNU专案的编译器。GCC的建立者由自由软件基金会直接管理[3]。
在1997年,一群不满GCC缓慢且封闭的创作环境者,组织了一个名为EGCS《Experimental/Enhanced GNU Compiler System》的专案,此专案汇整了数项实验性的分支进入某个GCC专案的分支中。EGCS比起GCC的建构环境更有活力,且EGCS最终也在1999年四月成为GCC的官方版本。
GCC目前由世界各地不同的数个程序设计师小组维护。它是移植到中央处理器架构以及操作系统最多的编译器。
由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与建立其他操作系统的主要编译器,包括BSD家族、Mac OS X、NeXTSTEP与BeOS。
GCC通常是跨平台软件的编译器首选。有别于一般局限于特定系统与运行环境的编译器,GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序。
目前支持的语言
以2006年5月24日释出的4.1.1版为准,本编译器版本可处理下列语言:
Ada 《GNAT》
C 《GCC》
C++(G++)
Fortran 《Fortran 77: G77,Fortran 90: GFORTRAN》
Java 《编译器:GCJ;解释器:GIJ》
Objective-C 《GOBJC》
Objective-C++
先前版本纳入的CHILL前端由于缺乏维护而被废弃。
Fortran前端在4.0版之前是G77,此前端仅支持Fortran 77。在本版本中,G77被废弃而采用更新的GFortran,因为此前端支持Fortran 95。
下列前端依然存在:
Modula-2
Modula-3
Pascal
PL/I
D语言
Mercury
VHDL
[编辑] 内嵌OpenMP支持
OpenMP是一种跨语言的对称多处理器(SMP)多线程并行程序的编程工具,也非常适合当今越来越流行的单CPU多核硬件环境,因此从gcc4.2开始,OpenMP成为其内嵌支持的并行编程规范,可以直接编译内嵌OpenMP语句的C/C++/Fortran95的源代码。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP语句的话,需要额外安装库和预处理器才能识别和正确处理这些语句。
gcc 4.2.0开始支持OpenMP v2.5
gcc 4.4.0开始支持OpenMP v2.5及v3.0
参见GNU的GOMP计划
支持的处理器架构
GCC目前支持下列处理器架构(以4.1版为准):
Alpha
ARM
Atmel AVR
Blackfin
H8/300
IA-32(x86)与x86-64
IA-64例如:Itanium
MorphoSys家族
Motorola 68000
Motorola 88000
MIPS
PA-RISC
PDP-11
PowerPC
System/370,System/390
SuperH
HC12
SPARC
VAX
Renesas R8C/M16C/M32C家族
较不知名的处理器架构也在官方释出版本中支持:
A29K
ARC
C4x
CRIS
D30V
DSP16xx
FR-30
FR-V
Intel i960
IP2000
M32R
68HC11
MCORE
MMIX
MN10200
MN10300
NS32K
ROMP
Stormy16
V850
Xtensa
由FSF个别维护的GCC处理器架构:
D10V
MicroBlaze
PDP-10
MSP430
Z8000
当GCC需要移植到一个新平台上,通常使用此平台固有的语言来撰写其初始阶段。
结构
GCC的外部界面长得像一个标准的Unix编译器。用户在命令行下键入gcc之程序名,以及一些命令参数,以便决定每个输入文件使用的个别语言编译器,并为输出代码使用适合此硬件平台的汇编语言编译器,并且选择性地运行链接器以制造可运行的程序。
每个语言编译器都是独立程序,此程序可处理输入的源代码,并输出汇编语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的源代码,并产生一抽象语法树,以及一翻译此语法树成为GCC的寄存器转换语言《RTL》
- 嵌入式开发工具简介(11-09)
- Linux下C/C++编译器gcc使用简介(04-05)
- Linux上安装GCC3.4.0编译器过程 (04-14)
- 基于GCC的嵌入式程序插装技术(02-18)
- Linux下C编程基础之:gcc编译器(08-13)
- 建立一个AVR的RTOS(3)—GCC中对寄存器的分配与使用(12-03)