1. 安装必备

yum groupinstall "Development Tools"
yum install glibc-static libstdc++-static
 
2. 编译安装 gcc 
another place recommendated is ustc opensouce mirror https://mirrors.ustc.edu.cn/gnu/gcc/
 
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz
tar -zxvf gcc-7.3.
cd gcc-7.3.
./contrib/download_prerequisites #安装依赖库,以前升级gcc非常麻烦,因为gcc依赖了mpfr、gmp、mpc 和isl共四个库,下载也麻烦 ,现在简单了
mkdir build
cd build
#在gcc目录,执行配置命令: ./configure --prefix=/usr/local/gcc7.3.0 --enable-multilib;
#如果只需要支持c,c++编译器,则执行配置命令:./configure --prefix=/usr/local/gcc7.3.0 --disable-multilib --enable-languages=c,c++
# –enable-checking=release 增加一些检查,也可以–disable-checking生成的编译器在编译过程中不做额外检查
#–enable-languages=c,c++ 你要让你的gcc支持的编程语言
#–disable-multilib 取消多目标库编译(取消32位库编译)
../configure --prefix=/usr/local/gcc7.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
make # or make -j which could determin the parallel compiling job number.
make install #here would install to the folder /usr/local/gcc7.3.0 which is specified by argument --prefix

optional step:

uninstall lower version of gcc if you has already installed in the system.

rpm -q gcc       #query if gcc has installed
rpm -q gcc-c++ #query if gcc-c++ has installed
rpm -e {package name which has listed if you have gcc installed, on centos , it maybe list as follows}
#gcc-4.8.-.el7_4..x86_64
#gcc-c++-4.8.-.el7_4..x86_64

3. add gcc to the system path

vim /etc/profile
add the following content at the end of file:
export PATH=$PATH:/usr/local/gcc7.3.0/bin

or just create a soft link to /usr/bin

sudo ln -s /usr/local/gcc7.3.0/bin/gcc /usr/bin/gcc
sudo ln -s /usr/local/gcc7.3.0/bin/g++ /usr/bin/g++

 4. view the gcc version

gcc --version
g++ --version

output:

 4. FAQ

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found (required

solution:

find / -name libstdc++.so*

output:

/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6.0.24
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/local/lib64/libstdc++.so.6.0.24
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so
/usr/local/lib64/libstdc++.so.6.0.24-gdb.py

找到这个这个目录下面的libstdc++.so.6.0.xx,我的是24

cp /usr/local/lib64/libstdc++.so.6.0. /usr/lib64
ldconfig #this is required

5. Alternative solution( not recommondated)

5.1 install devtoolset-6

sudo yum install centos-release-scl
sudo yum install devtoolset-
scl enable devtoolset- bash
sudo yum list devtoolset-\*

5.2. change default gcc version using command like:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6.3
sudo update-alternatives --config gcc

if u don't want gcc 6 as your default gcc version, you can enable it  just in  the current terminal:

scl enable devtoolset- bash

reference:
https://www.cnblogs.com/dalanjing/p/10618575.html

centos7 gcc升级的更多相关文章

  1. centos7.6 升级openssh openssl

    centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题. 前期请自行配置好yum源(如果不会请百度) 整个过程不需要卸载原先的openssl包和openssh的rpm ...

  2. linux 实现centos7在线升级最新版本内核

    Kernel  (内核)是操作系统的核心,掌握所有硬件设备的控制权,也就是说,你所希望计算机帮你完成的各项工作,都需要通过内核的帮助才能完成,当然,如果我们想完成的某个功能是内核没有的,则内核不会操控 ...

  3. centos7 docker升级到最新稳定版本

    原文:centos7 docker升级到最新稳定版本 一.前言 docker的版本分为社区版docker-ce和企业版dokcer-ee社,区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外 ...

  4. centos7内核升级及curl访问https证书过期处理

    centos7内核升级及curl访问https证书过期处理 先看下当前系统的linux内核版本 uname -r 3.10.0-229.el7.x86_64 升级步骤 1.rpm --import h ...

  5. CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)

    机房一台centos6.9机器部署了jenkins发布系统,开发人员在用node编译js,发现依赖的gcc版本低了,故需要将gcc升级到高版本(至少5.0版本以上),这里选择升级到6.4.0版本,下面 ...

  6. ulimit 更改 gcc升级 查看显卡状态命令

    一.更改ulimit: vim /etc/security/limits.conf 在文件最下方添加以下内容 * soft nofile 65536* hard nofile 65536 二. gcc ...

  7. java centos7 gcc编码 解决socket通信 汉字乱码

    1.把 Java eclipes 设置编码成utf-8 windows->preference->workspace 2.centos7 gcc 默认为utf-8

  8. centos7 离线升级/在线升级操作系统内核

    目录 一.前言 二.系统环境 三.系统内核下载网址 四.centos7离线升级系统内核 1.先查看系统环境 2.离线升级系统内核 五.在线升级系统内核 一.前言 CentOS(Community EN ...

  9. centos7.6升级ssh7.9、安装PHP7.2、Nginx1.15.9、PHP加密扩展php_screw1.5

    1.centos7 安装PHP7.2版本 #查询是否安装过php yum list installed | grep php yum provides php #移除php yum remove ph ...

随机推荐

  1. git基础问题

    1).git add 与gitstage的区别 git stage只是git add的同义词,所以在使用上没有区别 i)Git仓库的三个组成部分:工作区(Working Directory).暂存区( ...

  2. java常用日期类型转换

    import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import j ...

  3. zjoj1706: [usaco2007 Nov]relays 奶牛接力跑

    矩阵乘法(快速幂) 为说明方便,这里让\(k\)为点数,\(n\)为路径长度. 先将点都离散化,这样最后的点只有\(2k\)个. 先考虑一种暴力,每次用\(O(k^3)\)的复杂度来暴力更新,设当前长 ...

  4. 域渗透:LSA Protection

    简介:微软在 2014 年 3 月 12 日添加了 LSA 保护策略,用来防止对进程 lsass.exe 的代码注入,这样一来就无法使用 mimikatz 对 lsass.exe 进行注入,相关操作也 ...

  5. debug错误总结

    1, 2,就是一个大括号的问题..让你总是得不了满分..明明和别人的代码差不多. 3,就比如P1914,这种藏坑的题,或者说这一类藏坑的题. 坑是什么呢?就是位数不够往后推的时候.. 你不填坑你就得不 ...

  6. my.conf

    [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir ...

  7. noi.ac #44 链表+树状数组+思维

    \(des\) 给出长度为 \(n\) 的序列,全局变量 \(t\),\(m\) 次询问,询问区间 \([l, r]\) 内出现次数为 \(t\) 的数的个数 \(sol\) 弱化问题:求区间 \([ ...

  8. C/C++输入

    fgets(str,n,stdin) 从键盘输入一行,替代gets().读取到n-1字节时或换行符时终止,如果是文件的话,读到文件结尾也会停止 getline(cin,str) str的类型必须是st ...

  9. golang-复习1

    结构体: 是一种数据类型 type Person struct{  //l类型定义,地位等价与 int byte boo string ……通常放在全局位置 name string sex byte ...

  10. Java8 LocalDateTime的补充工具方法

    import java.time.*;import java.time.format.DateTimeFormatter;import java.time.format.DateTimeFormatt ...