用以下命令:

yum install gcc

安装的只有gcc,而不会安装g++。gcc是编译器合集,而gcc-g++或简称g++则是C++编译器。gcc成为了编译器的选择器。gcc通过识别被编译的源代码的后缀名,来启用不同的编译器来编译。如果是m.c,则会启用c语言编译器编译;如果是m.cpp,则会启用g++来编译。我们都可以用gcc m.c(pp)来实现编译。
    但是使用上述命令安装的gcc,并没有安装g++编译器。所以你编译cpp文件时会提示:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
    而如果直接执行g++命令,则提示命令找不到:
[root@VM_41_21_centos pkg]# g++ --version
-bash: g++: command not found
    这充分说明,gcc和g++并不是一回事。而区别在一开头就解释了。
    如果要安装g++编译器,则需要再安装gcc-c++,命令如下:
yum install gcc-c++
    安装完了,我们就需要看一下gcc编译器的版本:
[root@VM_41_21_centos pkg]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    我们可以在查看下g++编译器的版本:
[root@VM_41_21_centos pkg]# g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    之前我问朋友同事gcc和g++查出来的版本有区别吗?他们说没有区别。但是最近折腾服务器折腾的多,升级编译器后,发现gcc和g++查出来的版本号不一样,其中必定有蹊跷。通过一步步慢慢的摸索查资料学习,也就慢慢整明白了。
    gcc和g++的版本,我们一般都会同步的安装或升级。但是有时候也可能出现不同步的现象。上面就甚至没有安装g++。如果在升级编译器的时候,只升级了gcc,那么gcc和g++的版本都不一样了。至于版本不一样,是不是用gcc和g++编译会有差异,我没有研究了。当然,gcc编译C代码,g++编译c++代码,肯定都是按照gcc或g++的版本来的。但是gcc来编译C++代码,就不知道是什么情况了。(你可以用低版本的gcc编译C++11代码,安装的g++的版本完全支持C++,这样可以测试gcc和g++版本不一致是不是会产生一些问题或者说是一个什么样的情况。)
    如果没有安装g++,是没有办法编译C++代码的。gcc编译C++代码只是一个壳动作,真正编译是转交给了g++的。gcc链接C++动态库时,也是需要使用g++的。
    很多人要么就是把gcc和g++混为一谈,要么就是根本就搞不清楚,非常混乱。然而我仔细研究之后,才发现并不复杂。
    gcc最开始就仅仅是C语言的编译器,后来支持更多的语言了,其中包括C++。所以gcc已经变成了编译器选择器。不过gcc的基本属性,即编译C语言的能力还是存在的。而其他语言则要传递给其他的编译器组件。这也是我们安装时是指定gcc-c++的原因了,C++编译器即g++成为了gcc编译器集合中的一个组件而已。
    当然,以上都是我个人的一个大致的分析和理解,足以支持初学者了解基本的背景了。我作为一个初学者,只是因为认真研究了,总体的认识还是对的,至于太具体的细节,可能认知有限而错误。如果是这样,希望您能够指正。

from(codexia)

gcc和g++的区别:安装、版本、编译(转)的更多相关文章

  1. 结合python版本安装python-devel gcc和g++的区别 安装前做yum搜索

    [test@ecs autocloudservices]# yum install python-develLoaded plugins: fastestmirrorLoading mirror sp ...

  2. Linux - gcc和g++的区别

    一般linux系统都自带了gcc编译器的,你可以用你的安装光盘去安装,如果你是觉得自带的gcc版本太低了,可以去gcc的官方网站可以下载到,编译需要很长的时间,如果你只编译C或者C++可以只下载gcc ...

  3. 【转载】gcc和g++的区别

    [说明]本文转载自 静心 的文章 http://blog.163.com/lu_jun520/blog/static/5699613420116205148239/ 一般linux系统都自带了gcc编 ...

  4. gcc和g++的区别【转自中国源码网】

    gcc和g++的区别[转自中国源码网] gcc和g++都是GNU(组织)的一个编译器. 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是 ...

  5. linux中gcc和g++的区别

    1.两者都是编译器 2.gcc编译c语言:g++既可以编译c语言,也可以编译c++语言 3.gcc不能自动链接库文件,一般用g++来链接库文件,非要用gcc的话,一般使用gcc -lstdc++命令 ...

  6. gcc 与 g++的区别

    原文: http://www.cnblogs.com/wb118115/p/5969775.html ------------------------------------------------- ...

  7. 【C/C++】Linux的gcc和g++的区别

    Windows中我们常用vs来编译编写好的C和C++代码:vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多 ...

  8. gcc 与g++的区别

    原文 http://www.cnblogs.com/wb118115/p/5969775.html 什么是gcc / g++ 首先说明:gcc 和 GCC 是两个不同的东西 GCC:GNU Compi ...

  9. gcc、g++、gdb安装

    Windows安装 有闲工夫在Windows上安装g++/gcc/gdb,还不如装个虚拟机安装Linux,在Linux上安装 但是我还是要讲的 首先,需要安装MinGW,MinGW,是Minimali ...

随机推荐

  1. Sql Server执行一条Update语句很慢,插入数据失败

    今天同事要我修改服务器数据库里面的2条数据,查看服务器上的SQL Server数据库的时候,发现这几天数据没有添加成功,然后发现磁盘很快就满了,执行Update语句时,执行半天都提示还在执行,查询语句 ...

  2. 揭发233的docker/machine

    继手动滑稽之golang-vmware-driver广告篇,今天把vmware-driver完成 然而我却要发一篇牢骚,这是对docker公信力的挑战!!! 本来很简单的升级到vmware 15.x的 ...

  3. DWVA-关于反射型xss的漏洞详解<xss reflected>

    反射型xss low级别 代码如下: <?php header ("X-XSS-Protection: 0"); // Is there any input? if( arr ...

  4. C++Primer第五版 3.5.1节练习

    练习 3.27:假设txt_size是一个无参数的函数,它的返回值是int.请回答下列哪个定义是非法的?为什么? Unsigned buf_size = 1024; (a) int ia[buf_si ...

  5. graphviz 的使用教程

    node 节点属性如下 : Name Default Values color black node shape color comment   any string (format-dependen ...

  6. enum sizeof typedef分析

    1.枚举类型的使用方法 enum是C语言中的一种自定义类型 enum值是可以根据需要自定义的整型值 第一个定义的enum值默认为0 默认情况下的enum值是在前一个定义值的基础上加1 enum类型的变 ...

  7. cf - 429D

    Iahub and Sorin are the best competitive programmers in their town. However, they can't both qualify ...

  8. 线段相交的异或值 (线段树 or 优先队列)

    VVQ 最近迷上了线段这种东西 现在他手上有 n 条线段,他希望在其中找到两条有公共点的线段,使得他们的异或值最大. 定义线段的异或值为它们并的长度减他们交的长度 输入描述: 第一行包括一个正整数 n ...

  9. 如何修改netbeans的系统字体?

    1. 打开/etc/netbeans.config 2. 找到netbeans_default_options 3. 追加 --fontsize 12

  10. C++符合类型:指针和引用

    1. 引用(左值引用) 引用为对象起了另外一个名字,引用类型引用另外一种类型. int ival = 1024; int &refval = ival; //refval指向ival(是iva ...