1.下载编译gcc相关的gmp、mpfr、mpc(根据自己需求下载对应版本,最好版本不要太低)
传送门
NJU Mirror
2.下载isl(版本不要太低)
传送门
http://isl.gforge.inria.fr/
3.按顺序安装
1)
cd gmp-6.2.0
./configure –prefix=/usr/local/ctenv/build(这是我安装的路径,可以自己设置)
make && make install
这步安装完可能会有个坑,使用命令 rpm -qa | grep gmp 看下是否如下图安装正确
如果没有gmp-devel-6.0.0-15.el7.x86_64这个,使用sudo yum install gmp-devel-6.0.0-15.el7.x86_64安装下(版本号和你下载的版本号对应就行)
2)
cd mpfr-4.1.0
./configure –prefix=/usr/local/ctenv/build –with-gmp=/usr/local/ctenv/build
make && make install
3)
cd mpc-1.2.0
./configure –prefix=/usr/local/ctenv/build –with-gmp=/usr/local/ctenv/build –with-mpfr=/usr/local/ctenv/build
make && make install
4)
cd isl-0.18
./configure –prefix=/usr/local/ctenv/build –with-gmp=/usr/local/ctenv/build
make && make install
5)
sudo yum install texinfo
6)
sudo vi /etc/ld.so.conf
加入下面这行(即刚安装的路径的lib路径)
/usr/local/ctenv/build/lib
7)
重新搜索当前系统上所有库文件搜索路径下的库并生成缓存
sudo ldconfig -v
8)
这里是安装8.4步骤
cd gcc-8.4.0
./configure –prefix=/usr/local/ctenv/build –with-gmp=/usr/local/ctenv/build –with-mpfr=/usr/local/ctenv/build –with-mpc=/usr/local/ctenv/build –enable-checking=release –enable-languages=c,c++ –disable-multilib
make && make install
这里是安装10.3步骤
这里最好把1-2步下载的依赖都下成最高版本,但不能高于gcc-10.3的发布时间,不然不知道会有啥不兼容问题。
cd gcc-releases-gcc-10.3.0
./configure –prefix=/usr/local/ctenv/build –with-gmp=/usr/local/ctenv/build –with-mpfr=/usr/local/ctenv/build –with-mpc=/usr/local/ctenv/build –enable-checkinf=release –enable-languages=c,c++ –disable-multilib
make && make install
遇到报错
g++: 错误:gengtype-lex.c:没有那个文件或目录,
解决:yum install flex
然后
make clean
./configure –prefix=/usr/local/ctenv/build –with-gmp=/usr/local/ctenv/build –with-mpfr=/usr/local/ctenv/build –with-mpc=/usr/local/ctenv/build –enable-checking=release –enable-languages=c,c++ –disable-multilib
make && make install
9)
编译好之后可以看到安装目录下有个bin目录,把/usr/bin/gcc /usr/bin/g++删掉或者重命名下
创建软链接
ln -s /usr/local/ctenv/build/bin/gcc /usr/bin/gcc
ln -s /usr/local/ctenv/build/bin/g++ /usr/bin/g++
这样就把新的gcc和g++编译器连接好了,然后随便写个c11-17的代码测试下就OK了