转载自博客园
https://www.cnblogs.com/milton/p/7653760.html
保存学习用。
Centos6自带的gcc4.4.7不支持c++11, 于是编译安装最新版的gcc
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp
make && make install
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.6.tar.gz
tar xvf mpfr-3.1.6.tar.gz
cd mpfr-3.1.6
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make && make install
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp -with-mpfr=/usr/local/mpfr
make && make install
vi /etc/ld.so.conf
#增加以下三行
/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib
#
ldconfig -v
wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz
tar xvf gcc-6.4.0.tar.gz
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
make -j2 # 这个过程比较慢, 大概要半个多小时
make install
# 改名 /usr/bin 下的 cpp, c++, gcc, g++, gcov 这些文件, 再执行 gcc --version 就能看到新的版本信息了
Update 2017-10-12: 在将 /usr/bin/gcc 更名后, link到这个文件的 /usr/bin/cc 就失效了, 需要删除, 并在 /usr/local/bin/ 下新建一个到gcc的cc软链
到这里都是转载自博客园作者Milton的内容。
更新升级后的gcc还需要修改连接。不然gcc --version还是以前的版本信息。
按照大部分的文档接下来的切换gcc和g++版本使用的是
sudo updatedb
sudo update-alternatives --install /usr/bin/gcc gcc /opt/app/gcc6/bin/x86_64-pc-linux-gnu-gcc-6.4.0 10086 --slave /usr/bin/g++ g++ /opt/app/gcc6/bin/x86_64-pc-linux-gnu-g++
但是这个命令update-alternatives在目前的系统下无效(系统版本为centos6,没有找到原因!)
因为本来就是为了更改/usr/bin/gcc和/usr/bin/g++软连接
而且又不准备以后再切换回来原来的gcc版本所以就直接使用删除掉原来的gcc/g++连接,重新建立连接到新安装的gcc/g++位置,
本系统下安装的gcc位置为 /opt/app/gcc6
sudo rm /usr/bin/gcc //删除老的软连接
sudo ln -s /opt/app/gcc6/bin/gcc /usr/bin/gcc //创建新的软连接
sudo rm /usr/bin/g++ //删除老的软连接
sudo ln -s /opt/app/gcc6/bin/gcc /usr/bin/g++ //创建新的软连接