因为原生的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源码下载

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

五、笔者cmake版本是3.13.0,平时习惯用Qt Creator作为IDE开发项目。gcc升级之后,相应的配置需要调整:

05bdd22aafbe12cf0112b56a092b785c.png

调整为:

80ec23bdffb415677e91ebbf043ea89b.png

---

参考文献:

姐妹篇:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐