因为原生的CentOS 7自动安装的gcc版本是4.8.5;
yum -y install gcc gcc-c++ kernel-devel
最近工作和学习中需要使用C++17,所以被迫安装新版本的gcc编译器。
一、环境准备
yum -y install gmp-devel // 编译依赖此库
yum -y install mpfr-devel // 编译依赖此库
yum -y install libmpc-devel // 编译依赖此库
yum -y install bzip2 // 编译依赖此库
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.15.tar.bz2 // 编译依赖此库
tar -jxvf isl-0.15.tar.bz2
cd isl-0.15
./configure
make
make install
编译完成,检查gcc版本:
[root@localhost gcc-7.3.0]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 7.3.0 (GCC)
二、gcc源码下载
http://ftp.gnu.org/gnu/gcc/
C++17要求gcc版本在7.1以上
三、gcc源码编译
tar xvf gcc-7.3.0.tar.gz
chmod -R 777 gcc-7.3.0
cd gcc-7.3.0
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4 #编译非常耗时间,笔者花了大约50min
make install
四、编译报错及解决方法
问题1:gcc源码自身编译,找不到库的问题
gcc-7.3.0/host-x86_64-pc-linux-gnu/gcc/cc1: error while loading shared libraries: libisl.so.15: cannot open shared object file: No such file or directory
make[3]: *** [s-selftest] Error 1
make[3]: Leaving directory `/root/Downloads/gcc-7.3.0/host-x86_64-pc-linux-gnu/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/root/Downloads/gcc-7.3.0'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/root/Downloads/gcc-7.3.0'
# 在"/usr/local/lib"目录下,怎么就找不到库libisl.so。
解决方法是:加到"/etc/ld.so.conf"或用"LD_LIBRARY_PATH"。
vi /etc/ld.so.conf #添加库的路径/usr/local/lib/
然后终端命令行执行ldconfig,再重新编译。
问题2:gcc升级完成之后,编译项目工程时遇到的软连接问题
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
解决办法:https://blog.csdn.net/libaineu2004/article/details/77100132
五、笔者cmake版本是3.13.0,平时习惯用Qt Creator作为IDE开发项目。gcc升级之后,相应的配置需要调整:
调整为:
---
参考文献:
https://www.cnblogs.com/davygeek/p/8018628.html
姐妹篇:
https://blog.csdn.net/libaineu2004/article/details/49160315