一、检查centos 里面是否安装了gcc g++

输入命令:rpm -qa|grep gcc*
有看到就出来gcc的东西就是装了
没有的话就yum install gcc* -y

二、升级gcc

对于Centos 6.x的系统,默认根据yum源安装的gcc都是4.4.7版本的,即使换成阿里的yum源也是4.4.7版本的。这对于大多数软件是够用的,但是个别软件需要C++ 11的特性,而gcc从4.7版本才加入C++ 11特性,要解决这个问题一般有两种方法:

方法一:手动下载高版本的gcc的源码进行编译安装,这还需要先安装gcc的依赖软件包,比较繁琐

步骤:
(1)下载gcc-6.4.0:https://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz

如果直接安装,会提示Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+,所以要下载和安装GMP、MPFR和MPC这些依赖库,还要下载isl依赖库:

gmp-6.1.2: https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
mpfr-4.0.1: https://www.mpfr.org/mpfr-current/mpfr-4.0.1.tar.gz
mpc-1.1.0: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
isl-0.20: http://isl.gforge.inria.fr/isl-0.20.tar.gz

(3)安装GMP、MPFR和MPC有顺序要求,GMP是基础、MPC依赖MPFR,最后安装isl。
在各个依赖包解压后的文件夹下分别执行

./configure
make
sudo make install

进行编译安装即可

(4)依赖库安装完成后最后编译安装gcc

./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make
sudo make install

实际编译安装时按照这种方法搞了好久,到最后在执行sudo make install命令进行安装时会报错,网上也没找到相关原因,后来就采用了下述的方法二升级gcc成功!

方法二:使用devtoolset升级gcc版本,这个方法相对方法一比较快速

1.对于有网的电脑
按下述步骤操作:
1)先执行:

sudo wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
sudo yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

也可以下载devtoolset-3或者devtoolset-4,视情况下载安装。
devtoolset目前有4个版本:devtoolset-1.1 devtoolset-2 devtoolset-3 devtoolset-4,
以上devtoolset的4个版本分别对应gcc的版本为4.7、4.8、4.9、5.2
上述命令表示在/etc/yum.repos.d/下先新增一个devtools-2的yum网络源,然后再安装devtoolset-2的三个软件包,注意到安装这3个软件包时会还会下载安装另外8个依赖包。
2)上述软件包安装成功后就安装了gcc 4.8的版本。但是默认是没有开启的,需要执行下面命令以开启devtoolset-2:

. /opt/rh/devtoolset-2/enable

但是这样只会对当前shell会话有效,要想一直有效,可以在~/.bashrc文件中添加:

. /opt/rh/devtoolset-2/enable

这样每次shell会话都会开启devtoolset-2了。
开启了devtoolset-2之后就可以正常完成make和make install了。

2.对于没有网的电脑
按下述步骤操作:
1)先在有网的电脑上执行:

sudo wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
sudo yum install --downloadonly --downloaddir=/home/y/Desktop devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

把上述下载下来的软件包都移动到新建的devtoolsetAndDependency文件夹下,然后将该文件夹拷贝到没有网的电脑,做成yum本地源。如何制作yum本地源请参考:Centos 制作本地源
2)然后执行:

sudo yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

就会从本地yum源安装devtoolset-2了。

3)安装devtoolset-2完成后,如何开启devtoolset-2,请参照上面的 1.对于有网的电脑 所写的开启devtoolset-2的操作进行。

参考:
升级 GCC 支持C++11
CentOS 6.9升级GCC至6.4.0版本
CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)

安装devtoolset来满足gcc不同版本的要求
---------------------
作者:yzpyzp
来源:CSDN
原文:https://blog.csdn.net/yzpbright/article/details/81571645
版权声明:本文为博主原创文章,转载请附上博文链接!

转载:Centos升级gcc的更多相关文章

  1. Linux(CentOS)升级gcc版本

    本人使用的是CentOS 6.2 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 系统信息查看命令: cat /etc/redhat-release 使用y ...

  2. centos升级gcc

    https://blog.csdn.net/lanwilliam/article/details/77893033 [root@DS-VM-Node239 ~]# yum install centos ...

  3. ubuntu 14.04 与 CentOS 升级GCC/G++至5版本

    # 支持 ubuntu 14.04 add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get update apt-get i ...

  4. centos 升级GCC/G++

    #get rep yum install centos-release-scl-rh #yum install centos-release-scl # install g++ 5.2.1 yum - ...

  5. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  6. 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- ...

  7. CentOS 7 升级gcc/g++编译器

    gcc的升级必须要使用源码进行升级,也就说,必须要使用源码进行编译才行.我的7.2的CentOS目前自带的gcc是4.8.5的,gcc从4.8之后开始支持C++11,但是鉴于现在C++14.C++17 ...

  8. centos 6升级 GCC 到4.8

    centos 6升级 GCC 到4.8   安装最新版本的swoole 提示 pecl install swolle ... GCC 4.8 or later required. 首先想到的时候yum ...

  9. Centos 6.5升级gcc : 源码安装 + rpm安装

    1. 前言 采用Centos 6.5默认的gcc版本为4.4.7,不支持c++ 11,需要升级: 首先想到用yum命令:执行yum update gcc-c++或yum update g++ 显示没有 ...

随机推荐

  1. KsUML 免费的类图建模工具

    最近基于SharpDevelop和NClass两个开源软件,开发了一个免费的类图建模工具,详情请访问 www.TimeGIS.com KsUML类图建模工具是一个用来给软件开发人员使用的一种UML类图 ...

  2. lambda 怎么传递ref参数

    lambda 传递ref参数有个语法bug,必须要显式书写参数类型. //如 delegate bool FuncType(ref int num); FuncType func1; func1 = ...

  3. SQL SERVER 临时数据库 tempdb 迁移或增加文件

    临时数据库TempDB 虽然是临时库,但对整个数据库系统性能却起到很关键的作用:平时用到的中间数据集会暂时保存到TempDB 中,比如:临时表,排序,临时统计信息,一些中间结果数据,索引重建 等.我们 ...

  4. modbus串口通讯C#

    简介 公司给的一个小任务,这篇文章进行详细讲解 题目: modbus串口通讯 主要内容如下: 1.实现使用modbus通讯规约的测试软件: 2.具有通信超时功能: 3.分主站从站,并能编辑报文.生成报 ...

  5. AngularJS学习之旅—AngularJS 事件(十四)

    1.AngularJS 事件 ng-click ( 适用标签 :所有,触发事件:单击): ng-dblclick( 适用标签 :所有,触发事件:双击): ng-blur(适用标签 : a,input, ...

  6. Python Learning: 02

    OK, let's continue. Conditional Judgments and Loop if if-else if-elif-else while for break continue ...

  7. kali权限提升之本地提权

    kali权限提升之本地提权 系统账号之间权限隔离 操作系统的安全基础 用户空间 内核空间 系统账号: 用户账号登陆时候获取权限令牌 服务账号无需用户登录已在后台启动服务 windows用户全权限划分: ...

  8. 记录Html+Css流程表格

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. MATLAB中“fitgmdist”的用法及其GMM聚类算法

    MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...

  10. angularjs兼容thickbox 插件

    ThickBox是一个基于JQuery类库的扩展,它能在浏览器界面上显示非常棒的UI框, 它可以显示单图片,多图片,ajax请求内容或链接内容.ThickBox 是用超轻量级的 jQuery 库 编写 ...