Centos7.6
Yum
安装的默认GCC
版本为4.8.5
,如果需要使用GCC
的最新特性,则需要源码安装GCC
最新版。编译过程中解决不少报错,最终有了本文的实测成功记录。
安装环境
- 系统:
CentOS 7.6.1810
- 软件:
GCC 10.3.0
- 依赖软件:
gmp
、mpfr
、libmpc
安装说明
C++17
:
GCC7
完全支持,GCC6
和GCC5
部分支持,GCC6
支持度当然比GCC5
高,GCC4
及以下版本不支持。
C++14
:
GCC5
就可以完全支持,GCC4
部分支持,GCC3
及以下版本不支持。
C++11
:
GCC4.8.1
及以上可以完全支持。GCC4.3
部分支持,GCC4.3
以下版本不支持。
高版本的GCC
向下兼容,支持低版本的C++
标准。现在很多服务器Yum
里的GCC
版本是4.8.5
,也就是可以完全支持C++11
了,部分支持C++14
,不支持C++17
。
安装相关包
安装依赖库
Yum
安装GCC
、GCC-C++
的C/C++
语言编译环境以及所需的依赖库
预先安装旧版
GCC
以及编译时所需的依赖库,最后工作在进行卸载
# 安装EPEL源
yum install -y epel-release
# 安装工具
yum install -y vim wget gcc gcc-c++ make autoconf automake zip bzip2
# 安装基础编译软件
yum install -y gcc-gnat libgcc libgcc.i686 glibc-devel bison flex m4 texinfo build-essential
准备相关 GCC
编译过程是非常耗时的(本机耗时 6 小时完成编译),因此如果读者选用此方式安装
GCC
,则在执行make
命令时一定要安排合适的时间。
下载并解压
wget -P '/usr/local/src' https://ftp.gnu.org/gnu/gcc/gcc-10.3.0/gcc-10.3.0.tar.gz \
&& cd /usr/local/src \
&& tar -zxvf gcc-10.3.0.tar.gz -C '/usr/local/src' \
&& cd gcc-10.3.0
加入依赖库环境变量
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64' >> /etc/profile
- 使环境变量立即生效
source /etc/profile
添加动态链接库
vim /etc/ld.so.conf
添加以下内容
include ld.so.conf.d/*.conf
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
重新搜索当前系统上所有库文件搜索路径下的库文件,并生成缓存
ldconfig -v
安装依赖包
- 检查和下载
GCC
依赖环境
# 下载安装 GCC 所需要的依赖包(如 gmp、mpfr、mpc 等)
# 一定观察此命令的执行结果,保证其确实是将 gmp、mpfr、mpc 等依赖包成功下载下来。
./contrib/download_prerequisites
> gmp-6.1.0.tar.bz2: OK
> mpfr-3.1.4.tar.bz2: OK
> mpc-1.0.3.tar.gz: OK
> isl-0.18.tar.bz2: OK
> All prerequisites downloaded successfully.
- 编译安装依赖包(可忽略)
cd /usr/local/src/gcc-10.3.0/gmp-6.1.0
./configure --prefix=/usr/local/gmp-6.1.0
make && make install
cd /usr/local/src/gcc-10.3.0/mpfr-3.1.4
./configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0
make && make install
cd /usr/local/src/gcc-10.3.0/mpc-1.0.3
./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4
make && make install
cd /usr/local/src/gcc-10.3.0/isl-0.18
./configure --prefix=/usr/local/isl-0.18 --with-gmp=/usr/local/gmp-6.1.0
make && make install
编译安装 GCC
cd /usr/local/src/gcc-10.3.0 \
&& mkdir build && cd build \
&& ../configure --enable-threads=posix --enable--long-long --enable-languages=c,c++ --disable-checking --disable-multilib
# 如果GCC依赖包已经进行了上一步编译操作,则执行以下命令:
../configure --prefix=/usr/local/gcc-10.3.0 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3 --with-isl=/usr/local/isl-0.18 --enable-threads=posix --enable--long-long --enable-languages=c,c++ --disable-checking --disable-multilib
--enable-threads=posix 使c++异常能处理多线程代码
--enable--long-long 设定gcc数据类型大小
–-enable-languages 表示你要让你的gcc支持那些语言
–-disable-checking 生成的编译器在编译过程中不做额外检查,也可以使用 *–enable-checking=xxx* 来增加一些检查
–-disable-multilib 不生成编译为其他平台可执行代码的交叉编译器。
# 整个编译过程,根据你的机器配置,可能要等十几分钟到一个小时不等;
# 4为当前服务器每颗物理CPU中的核心数,以实际为准。
make -j 4
yum -y remove gcc gcc-c++ # 安装前卸载原来的GCC
make install
# 由此就成功安装了 10.3.0 版本的 GCC 编译器。需要注意的是,如果此时读者直接执行 gcc --version,则 GCC 版本仍会显示之前安装的版本。操作系统重启之后,GCC 版本就会自行更正过来。
- 配置环境变量
echo 'export PATH=/usr/local/gcc-10.3.0/bin:$PATH' >> /etc/profile
exit # 执行后需要重启终端窗口
- 检查
GCC
版本
重新登录后检查当前
GCC
版本
gcc -v
作者:白小七羽
原文链接:https://geek.xiaoqy.com/404.html