- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言第19讲GCC编译器
第19讲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,以及Go与其他语言。一、概观GCC是由理查德·马修·斯托曼在1985年开始的。他首先扩增一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的。Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言。为了让自由软件有一个编译器,后来此编译器由斯托曼和Len Tower在1987年以C语言重写并成为GNU专案的编译器。GCC的建立者由自由软件基金会直接管理。在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编译,有很大的机会可得到正确无误的输出程式。二、目前支持的语言以2011年10月26日释出的4.6.2版为准,本编译器版本可处理下列语言:Ada (GNAT)C (GCC)C++(G++)Fortran (Fortran 77: G77,Fortran 90: GFORTRAN)Java (编译器:GCJ;解释器:GIJ)Objective-C (GOBJC)Objective-C++Go先前版本纳入的CHILL前端由于缺乏维护而被废弃。Fortran前端在4.0版之前是G77,此前端仅支援Fortran 77。在本版本中,G77被废弃而采用更新的GFortran,因为此前端支援Fortran 95。下列前端依然存在:Modula-2Modula-3PascalPL/ID语言MercuryVHDL三、内嵌OpenMP支持OpenMP是一种跨语言的对称多处理机(SMP)多线程并行程序的编程工具,也非常适合当今越来越流行的单CPU多核硬件环境,因此从gcc4.2开始,OpenMP成为其内嵌支持的并行编程规范,可以直接编译内嵌OpenMP语句的C/C++/Fortran95的源代码。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP语句的话,需要额外安装库和预处理器才能识别和正确处理这些语句。gcc 4.2.0开始支持OpenMP v2.5gcc 4.4.0开始支持OpenMP v2.5及v3.0支援的处理器架构四、GCC目前支援下列处理器架构(以4.1版为准):AlphaIA-32(x86)与x86-64MIPS与龙芯SuperHARMIA-64 例如:ItaniumPA-RISCHC12Atmel AVRMorphoSys家族PDP-11SPARCBlackfinMotorola 68000PowerPCVAXH8/300Motorola 88000System/370,System/390Renesas R8C/M16C/M32C家族1、较不知名的处理器架构也在官方释出版本中支援:(略)2、由Free Software Foundation个别维护的GCC处理器架构:(略)3、当GCC需要移植到一个新平台上,通常使用此平台固有的语言来撰写其初始阶段。五、结构GCC的外部接口长得像一个标准的Unix编译器。使用者在命令列下键入gcc之程式名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程式码使用适合此硬件平台的组合语言编译器,并且选择性地执行连结器以制造可执行的程式。每个语言编译器都是独立程式,此程式可处理输入的源代码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构
文档评论(0)