的区别目前(2020-09)GCC编译器已经更新到10.2版本,功能也从最初只能编译C语言扩展到可以编译多种编程语言,包括C++。此外,目前的GCC编译器还支持编译Go、Objective-C、Objective-C++、Fortran、Ada、D和BRIG(HSAIL)等程序,甚至GCC6及之前的版本也支持编译Java。程序。不过本教程主要讲解如何使用GCC编译器编译运行C、C++程序,所以如何使用GCC编译器编译其他编程语言就不做详细说明了。那么,在编写好C语言或C++代码的前提下,如何调用GCC编译器为我们编译程序呢?很简单,GCC编译器已经给我们提供了调用它的接口。对于C语言或C++程序,可以通过执行gcc或g++指令调用GCC编译器。值得一提的是,在实际使用中,我们更习惯于用gcc指令编译C语言程序,用g++指令编译C++代码。需要强调的是,这不是gcc和g++的区别,gcc指令也可以用来编译C++程序,g++指令也可以用来编译C语言程序。那么,gcc和g++有什么区别呢?接下来,我将为读者做详细的讲解。其实只要程序代码是用GCC编译过的,都可以使用gcc命令进行编译。可以理解gcc是GCC编译器的通用编译命令,因为gcc命令可以根据程序文件的后缀名判断当前程序使用的编程语言类型,例如:xxx.c:默认是编译C语言程序编译这个文件;xxx.cpp:默认将此文件编译为C++程序。xxx.m:默认编译Objective-C程序编译该文件;xxx.go:默认编译Go语言程序编译该文件;接口,即带有-x选项。例如gcc-xcxxx表示按照编译C语言代码的方式编译xxx文件;而gcc-xc++xxx的意思是按照编译C++代码的方式编译xxx文件。关于-x选项的使用,后面会给出具体的例子。但是如果你使用g++指令,它会像C++代码一样编译目标文件,不管目标文件的后缀是什么。即对于.c文件,gcc指令被当作C语言代码,g++指令被当作C++代码。但是对于.cpp文件,gcc和g++都编译为C++代码。有些读者可能会认为C++兼容C语言,那么对于C语言程序来说,用gcc还是g++编译应该没有区别,但事实并非如此。严格来说,C++标准和C语言标准的语法要求是不一样的。例如://位于demo.c文件中#includeintmain(){constchar*a="abc";打印结构(一);return;}intprintStr(constchar*str){printf(str);}如上所示,这是一个非标准的C语言代码。如果我们使用gcc命令编译,如下图:[root@bogon~]#gcc-xcdemo.c#或者直接运行gccdemo.c[root@bogon~]#可以看到这个的执行过程命令没有发生任何错误。同样的程序,如果我们使用g++命令编译:[root@bogon~]#g++demo.cdemo.c:Infunction'intmain()':demo.c:5:error:'printStr'wasnotdeclaredinthisscopedemo.c:6:error:return-statementwithnovalue,infunctionreturning'int'[root@bogon~]#可以看出GCC编译器发现了3个错误。显然,C++标准对代码编写规范的要求更为严格。此外,使用gcc和g++来编译和执行C++程序是有区别的。要知道很多C++程序都会调用一些标准库中已有的函数或者类对象,而简单的gcc命令并不能自动链接这些标准库文件。例如://demo.cpp#include#includeusingnamespacestd;intmain(){stringstr="C语言中文网";cout<头文件提供的string字符串类定义一个string对象,然后使用cout输出流对象输出。对于这段C++代码,如果我们使用g++命令进行编译,如下图:[root@bogon~]#g++demo.cpp[root@bogon~]#可以看到整个编译过程没有报错。但是如果你使用gcc命令:[root@bogon~]#gccdemo.cpp/tmp/ccIOnwra.o:Infunction`main':demo.cpp:(.text+0x13):undefinedreferenceto`std::allocator::allocator()'\#省略了很多错误信息读者可以自行编译,可以看到很多错误信息。根本原因是本程序使用了标准库和提供的类对象,但gcc默认找不到。如果要使用gcc命令编译执行C++程序,需要在使用gcc命令时手动添加-lstdc++-shared-libgcc选项,即gcc在编译C++程序时可以链接必要的C++标准库程序。也就是说,我们可以这样编译demo.cpp文件:[root@bogon~]#gcc-xc++-lstdc++-shared-libgccdemo.cpp[root@bogon~]#这样,demo.cpp就编译成功了.读者可以认为g++命令等同于gcc-xc++-lstdc++-shared-libgcc命令。显然后者写起来很繁琐,大多数人会更喜欢前者。对于gcc和g++的指令,还有其他更详细的区别,这里不再赘述。看完本节,读者只需要知道编译C语言程序,我们应该使用gcc指令,而编译C++程序,推荐使用g++指令,就足够了。以上就是良虚教程网为各位小伙伴分享的gcc和g++的区别。以上就是良序教程网为各位小伙伴们分享的Linux相关知识。