当前位置:   article > 正文

Linux | gcc和g++的区别_linux中gcc和g++区别

linux中gcc和g++区别

一.笼统的说明gcc和g++的区别

gcc 最开始的时候是 GNU C Compiler,就是一个c编译器。但是后来因为这个项目里边集成了更多其他不同语言的编译器,gcc就代表 the GNU Compiler Collection,所以表示一堆编译器的合集。 g++则是gcc的c++编译器。

现在我们在编译代码时调用的gcc,已经不是当初那个c语言编译器了,更确切的说他是一个驱动程序,根据代码的后缀名来判断调用c编译器还是c++编译器 (g++)。比如你的代码后缀是*.c,他会调用c编译器还有linker去链接c的library。如果你的代码后缀是cpp, 他会调用g++编译器,当然library call也是c++版本的。

二.更细致的了解gcc和g++的区别

1.gcc和g++对不同文件后缀的不同处理方法

  1. 对于.c后缀的文件,gcc把它当做是C程序,而g++当做是C++程序

  2. 对于.cpp后缀的文件,gcc和g++都会当做c++程序

2.gcc和g++在编译间段的关系

在编译阶段,g++会调用gcc,对于c++代码,两者是等价的,即编译工作最终都是由gcc来完成的。

3.gcc和g++在链接阶段的区别

因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接(因为g++会自动调用链接的c++库),为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

但我们可以手动的让gcc完成链接,例如:

gcc -lstdc++ main.cpp

但是gcc在编译c程序的时候,它会自动链接c库的。

4.gcc和g++对是否extern "C"时的处理方法

当程序未加extern “C”时,用gcc和g++编译得到的函数名是一样的,都是以C++的命名方式。

当程序添加extern “C”后,用gcc和g++编译得到的函数名是一样的,都是以C的命名方式。

由此可见,extern “C”与采用gcc/g++并无关系。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/260796
推荐阅读
相关标签
  

闽ICP备14008679号