Linux编译工具:解析GCC和G的差别 (linux下gcc和g 区别)

在Linux开发中,编译工具是必不可少的。其中最常用的就是GCC和G编译器。然而,很多人并没有意识到两者之间的差别,也不清楚它们该如何选择。本文将详细解析GCC和G的差别,以便大家选择适合自己的编译工具。

一、GCC简介

GCC(GNU Compiler Collection)是GNU Compiler System的简称,是UNIX操作系统中广泛使用的编译工具集。GCC支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、以及Java等。它被认为是市场上更好的编译器之一,因为它具有良好的优化能力,能够在不同的平台上生成高质量的可执行程序,并且具有免费开源的特点。

GCC具有以下主要特点:

1.支持多种编程语言,使用广泛;

2.可以在各种平台上使用;

3.对于一些较老的计算机,也可以进行编译;

4.输出可执行文件的性能优越。

二、G编译器简介

G编译器(GNU A Compiler)是一种专门为Ada编写的编译器,同样是由Free Software Foundation发布的自由软件。与GCC类似,G编译器也采用了GPL(GNU General Public License)。

相对于GCC,G编译器的应用范围较为局限,特别适合Ada编程语言的编译。Ada编程语言是为了针对大型、复杂的软件系统所设计的,具有强类型、高可读性、强可靠性的特点。因此,Ada编译器对于高可信软件系统的开发来说,是非常必要的。

G编译器具有以下主要特点:

1.支持Ada编程语言,专注于高可信软件系统的开发;

2.生成的代码比GCC更快速;

3.更加安全可靠,因为默认是开启错误检查的。

三、GCC和G的差别

GCC和G编译器都是GNU编译工具集中的工具,它们的更大区别在于支持的编程语言和应用范围。

GCC支持的编程语言包括C、C++、Objective-C、Fortran、Ada,以及一些小型编程语言。而G编译器则专注于Ada编程语言的编译,这使得它更适合高可信软件系统的开发。

G编译器相比GCC,在生成的代码速度和安全性方面有更强的优势。G编译器生成的代码比GCC的代码更快速、更加可靠和安全,这主要是因为G编译器默认开启错误检查,可以在编译时发现并纠正错误,确保程序更加安全稳定。

选择编译器的时候,应该根据具体的情况而定。如果是想要开发高可信软件系统的话,那么就应该使用G编译器;而如果是一般的开发需求,那么GCC会更加适合。

四、

在Linux开发中,选择合适的编译器是很关键的。GCC和G编译器在应用范围和生成的代码速度、安全性方面有所差异。虽然两者都是GNU编译工具集中的工具,但是选择适合自己的编译器才能更好地完成开发任务。最终,我们需要根据具体需求来选择编译器。

相关问题拓展阅读:

什么是GCC?GCC有什么作用?

GCC(GNU Compiler Collection,GNU

编译器

套件),是由 GNU 开发的

编程语言

编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、

Mac OS X

等)采纳为标准的编译器,GCC同样适用于

微软

的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以

GPL协议

发布。

GCC功能与作用:

1、预处理

命令gcc首先调用cpp进行预处理,在预处理过程中,对

源代码

文件中的文件竖慎包含(include)、预编译语句(如

宏定义

define等)进行分析。

2、编译

用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。

3、连接

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合含颂适的地方。

4、汇编

汇编过程是针对

汇编语言

的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

扩展资料:

gcc所遵循的部分约定规则:

1、.c为后缀的文件,C语言源代码文件。

2、.a为后缀的文件,是由目标文件构成的档案

库文件

3、.h为后缀的文件,是程序所包含的

头文件

4、.i 为后缀的文件,是C源代码文件且不应该对其执行预处理。

5、.m为后缀的文件,是Objective-C源代码文件。

6、.o为余老敬后缀的文件,是编译后的目标文件。

7、.s为后缀的文件,是汇编语言源代码文件。

参考资料:

百度百科—gcc

什么是GCC?GCC是由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection, 目前可以编译的语言包括:C, C++, Objective-C, Fortran, Java, and Ada, 可以在其官方页面找到更加详细的信息什么是GCC?GCC是一个原本用于Unix-like系统下编程的编译器。不过,现在GCC也有了许多Win32下的移植版本。这要感谢Internet上众多程序员的共同努力。GCC的历史

GCC是GNU公社的一个项目。是一个用于编程开发的自由编译器。最初,GCC只是一颤败清个C语言编译器,他是GNU C Compiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC以经是一个包含众多语言的编译器了。其中包括 C,C++,Ada,Object C和Java等。所以,GCC也由原来的GNU C Compiler变为GNU Compiler Collection。也就是 GNU编译器家族 的意思。当然,如今的GCC借助于他的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。

直到现在,GCC的历史仍然在继续,他的传奇仍然被人所传颂。GCC有什么作用?Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。GCC有什么作用?Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。

.c为后缀的文件,C语言源代码文件;

.a为后缀的文件,是由目标文件构成的档案库文件;

.C,.cc或.cxx 为后缀的文件,是C++源代码文件;

.h为后缀的文件,是程序所包含的头文件;

.i 为后缀的文件,是已经预处理过的C源代码文件;

.ii为后缀的文件,是已经预处理过的C++源代码文件;

.m为后缀的文件,是Objective-C源代码文件;

.o为后缀的文件,是编译后的目标文件;

.s为后缀的文件,是汇编语言源代码文件;

.S为后缀的文茄前件,是经过预编译的汇编语言源代码文件。GCC有什么作用?Gcc的执行过程

虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用枯培as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。GCC有什么作用?Gcc的基本用法和选项

在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

Gcc最基本的用法是∶gcc

其中options就是编译器所需要的参数,filenames给出相关的文件名称。

-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。

-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。

-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。

-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。

-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶

A)#include

B)#include “myinc.h”

其中,A类使用尖括号(),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件

c语言和gcc有什么区别

gcc是编译器散蚂

vc的语法规范和gcc稍微有些纯乱不同做掘档,但都是基于c99的,gcc稍微宽松一点

检查下编译参数,头文件

g++和gcc都是

计算机语言

的编译器(在linux操作系统中运行)。前者洞侍行用于编译c++语言,后者可编译c和c++语言。

编译器的作用就是把程序员根据某种

计算机编程语言

所写的代码翻译为机器指令让计算机谈戚执行纳哗。

linux下gcc和g 区别的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux下gcc和g 区别,Linux编译工具:解析GCC和G的差别,什么是GCC?GCC有什么作用?,c语言和gcc有什么区别的信息别忘了在本站进行查找喔。


数据运维技术 » Linux编译工具:解析GCC和G的差别 (linux下gcc和g 区别)