首页 > 海南 > 儋州市 > gcc,gcc是什么

gcc,gcc是什么

来源:整理 时间:2023-03-19 08:28:03 编辑:好学习 手机版

本文目录一览

1,gcc是什么

GCC是一个用于linux系统下编程的编译器是一个用于编程开发的自由编译器。最初,GCC只是一个C语言编译器,它是GNU C Compiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC已经是一个包含众多语言的编译器了。其中包括 C,C++,Ada,Object C和Java等。所以,GCC也由原来的GNU C Compiler变为GNU Compiler Collection。也就是 GNU编译器家族的意思。当然,如今的GCC借助于它的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。
GCC是一个用于linux系统下编程的编译器,gcc在开发工具包(Development Tools)里面,安装系统的时候一定要安装上,因为会经常被用到!否则,再安装会很麻烦!

gcc是什么

2,GCC是什么编译器跟vc自带的有什么不同

GCC的全称是GNU Compiler Collection 是GNU下属的编译器集合, 包括C/C++, JAVA, Perl, Python等语言. 你问他和VC有什么不同? 我要告诉你的是: 1、GCC是一个编译器集合, VC是MS开发的Windows系统C/C++ IDE. 2、GCC中的C/C++标准库代码和VC肯定是不同的, MS一般都是从别人那买来用, 比如Dinkumware, GCC C/C++的标准库就是GNU自己写的了, 当然这遵循GPL, MS虽然也可以免费拿来用, 但是MS历来仇视GPL和Linux. 还有就是GCC C/C++的标准库对C/C++标准的貌似是最好的. 3、Linux的桌面操作系统基本都集成安装了KDE(K Desktop Environment), X-Windows等图形操作系统界面, 所以各种包装了GCC编译器内核的IDE应运而生, 比如Ubuntu, Mandriva, Fedora, Debian等操作系统中都有自带的GCC IDE, 当然你也可以用Commond Line来操作和编译代码.

GCC是什么编译器跟vc自带的有什么不同

3,什么是GCC编译器

Linux系统下的Gcc(GNUnbsp;Cnbsp;Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。nbsp;Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。nbsp;.c为后缀的文件,C语言源代码文件;nbsp;.a为后缀的文件,是由目标文件构成的档案库文件;nbsp;.C,.cc或.cxxnbsp;为后缀的文件,是C++源代码文件;nbsp;.h为后缀的文件,是程序所包含的头文件;nbsp;.inbsp;为后缀的文件,是已经预处理过的C源代码文件;nbsp;.ii为后缀的文件,是已经预处理过的C++源代码文件;nbsp;.m为后缀的文件,是Objective-C源代码文件;nbsp;.o为后缀的文件,是编译后的目标文件;nbsp;.s为后缀的文件,是汇编语言源代码文件;nbsp;.S为后缀的文件,是经过预编译的汇编语言源代码文件。nbsp;Gcc的执行过程nbsp;虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。nbsp;命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。nbsp;Gcc的基本用法和选项nbsp;在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。nbsp;Gcc最基本的用法是∶gccnbsp;[options]nbsp;[filenames]nbsp;其中options就是编译器所需要的参数,filenames给出相关的文件名称。nbsp;-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。nbsp;-onbsp;output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。nbsp;-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。nbsp;-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。nbsp;-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。nbsp;-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶nbsp;A)#includenbsp;B)#includenbsp;“myinc.h”nbsp;其中,A类使用尖括号(amp;lt;nbsp;amp;gt;),B类使用双引号(“nbsp;”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中

什么是GCC编译器

4,GCC是什么单位

GCC是一个用于linux系统下编程的编译器。GCC又是海湾阿拉伯国家合作委员会的英文缩写。概述:  GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套 GNU编译器套装以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。   GCC 原名为 GNU C 语言编译器,因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada与其他语言。历史:  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编译,有很大的机会可得到正确无误的输出程序。结构:  GCC的外部接口长得像一个标准的Unix编译器。使用者在命令列下键入gcc之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连结器以制造可执行的程序。   每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端。编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位〈buffer overflow〉的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与Chris Fraser发明的算法产出。   几乎全部的GCC都由C写成,除了Ada前端大部分以Ada写成。   前端接口   前端的功能在于产生一个可让后端处理之语法树。此语法解析器是手写之递回语法解析器。   直到最近,程序的语法树结构尚无法与欲产出的处理器架构脱钩。而语法树的规则有时在不同的语言前端也不一样,有些前端会提供它们特别的语法树规则。   在2005年,两种与语言脱钩的新型态语法树纳入GCC中。它们称为GENERIC与GIMPLE。语法解析变成产生与语言相关的暂时语法树,再将它们转成GENERIC。之后再使用"gimplifier"技术降低GENERIC的复杂结构,成为一较简单的静态唯一形式(Static Single Assignment form,SSA)基础的GIMPLE形式。此形式是一个与语言和处理器架构脱钩的全域最佳化通用语言,适用于大多数的现代编程语言。   中介接口   一般编译器作者会将语法树的最佳化放在前端,但其实此步骤并不看语言的种类而有不同,且不需要用到语法解析器。因此GCC作者们将此步骤归入通称为中介阶段的部分里。此类的最佳化包括消解死码、消解重复运算与全域数值重编码等。许多最佳化技巧也正在实作中。   后端接口   GCC后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺寸、呼叫方式与大小尾序等。后端接口的前半部利用这些讯息决定其RTL的生成形式,因此虽然GCC的RTL理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标架构的格式。   GCC的最佳化技巧依其释出版本而有很大不同,但都包含了标准的最佳化算法,例如循环最佳化、执行绪跳跃、共通程序子句消减、指令排程等等。而RTL的最佳化由于可用的情形较少,且缺乏较高阶的资讯,因此比较起近来增加的GIMPLE语法树形式[2],便显得比较不重要。   后端经由一重读取步骤后,利用描述目标处理器的指令集时所取得的资讯,将抽象暂存器替换成处理器的真实暂存器。此阶段非常复杂,因为它必须关照所有GCC可移植平台的处理器指令集的规格与技术细节。   后端的最后步骤相当公式化,仅仅将前一阶段得到的组合语言码藉由简单的副函式转换其暂存器与内存位置成相对应的机械码。
阿拉伯海湾联合委员会
文章TAG:是什么什么gcc

最近更新

  • 算开头的四字成语,以算字开头的成语

    以算字开头的成语以算字开头的成语:算减一升、算无遗策、算沙抟空、算尽锱铢{0}2,算字开头的四字成语有哪些最佳答案:算减一升算尽锱铢算盘脑袋算沙抟空算减一升算尽锱铢算沙抟空算盘脑袋 ......

    儋州市 日期:2023-05-06

  • 福鼎太姥山,福建太姥山自驾路线:立交下车即可直达景区大门

    在太姥山立交下车,跟着指示牌走,即在两个环岛路口右转,进入琴台旅游公路,步行15公里到太姥山景区大门,有直达太姥山,票价40元左右,福州至太姥山自驾路书:福州-马尾-沈海高速-太姥 ......

    儋州市 日期:2023-05-06

  • 元旦放假安排,元旦放假安排

    元旦放假安排这是根据放假规定做的预测版,仅供参考。正式版请等国务院公布哦!2016年放假安排时间表如下:元旦:2016年1月1日至1月3日,放假3天2016年1月1日(星期五)为国 ......

    儋州市 日期:2023-05-05

  • 宝宝翻身,我家宝宝太胖了每天翻不了身

    老人们总说自己是六转八坐八爬,但是我家宝宝三个月后根本没有要翻身的意思,可能是因为我家宝宝太胖了,每天都翻不了身,一般宝宝是四到五个月翻身,有的会提前三个月,有的会延迟,这和宝宝的 ......

    儋州市 日期:2023-05-05

  • 老鸭粉丝,白汤南京老鸭粉丝汤的做法

    白汤南京老鸭粉丝汤的做法老鸭粉丝汤的做法主料鸭边腿1只鸭胗6个熟鸭肠250g鸭血400g粉丝150g油豆腐100g辅料盐适量葱姜适量大料4个花椒4g桂皮1块白酒5ml胡椒粉3g香菜 ......

    儋州市 日期:2023-05-05

  • 贺星龙,对80后村医贺星龙的赞美诗词

    对80后村医贺星龙的赞美诗词《菩萨蛮(赠张医道服为别,且令餽河豚)》宋代辛弃疾原文:万金不换囊中术。上医元自能医国。软语到更阑。绨袍范叔寒。江头杨柳路。马踏春风去。快趁两三杯。河豚 ......

    儋州市 日期:2023-05-05

  • 腌萝卜条的做法,腌萝卜条的做法

    腌萝卜条的做法材料:大白萝卜若干根。调料:盐糖辣椒面。做法:1、把萝卜洗净,沥干水分。.2、然后切成小段,放一个大盆里,撒上一些盐,拌匀.。3、每天翻倒两次,腌制一周后,放清水内浸 ......

    儋州市 日期:2023-05-05

  • 其实你不懂我的心,一句其实你不懂我的心下句是什么

    一句其实你不懂我的心下句是什么我可以用一辈子的时间去懂你的心我的爱早已超出你预期2,其实你不懂我的心作文800字左右随着年龄的逐渐增大,我与父母之间产生了代沟。对此,我很少与他们进 ......

    儋州市 日期:2023-05-04