截止到2020年,C/C++标准多次更迭,如c++98, c++03, c++11, c++14, c++17, c++20。为了使用这些新标准,我们应根据需求来更新GCC。
本教程以非root用户
使用源码安装 gcc-8.3.0
。
【gcc下载网址】 https://ftp.gnu.org/gnu/gcc/
可查看解压后的gcc文件中的contrib/download_prerequisites,以确定所需的依赖库及其版本信息。如下图所示:
1个gcc,4个依赖包
)。gcc
。(源码可在 https://gcc.gnu.org/ 或者 https://ftp.gnu.org/gnu/gcc/) 查找并下载。为了避免读者搜索各种包的繁琐过程,特将gcc-8.3.0及依赖包等放在 GCC源码+依赖包 (如截图所示)。
依赖包下载地址,可以方便的查找适合或者最新的包:
假设我们将gcc及其依赖包,都安装在
/home/dabai
普通用户目录下。
$ cd /home/dabai
$ tar -xzvf gmp-4.3.2.tar.gz
$ cd gmp-4.3.2
$ ./configure --prefix=/home/dabai/gmp-4.3.2
$ make && make install
$ cd /home/dabai
$ tar -xzvf mpfr-2.4.2.tar.gz
$ cd mpfr-2.4.2
$ ./configure --prefix=/home/dabai/mpfr-2.4.2 --with-gmp=/home/dabai/gmp-4.3.2
$ make && make install
P.S. 若遇到问题,请参考下面的 “06 扫雷”篇。
$ cd /home/dabai
$ tar -xzvf mpc-1.0.1.tar.gz
$ cd mpc-1.0.1
$ ./configure --prefix=/home/dabai/mpc-1.0.1 --with-gmp=/home/dabai/gmp-4.3.2 --with-mpfr=/home/dabai/mpfr-2.4.2
$ make && make install
$ cd /home/dabai
$ mkdir isl #因isl不支持当前目录安装,所以需新建一个
$ tar -xzvf isl-0.24.tar.gz
$ cd isl-0.24
$ ./configure --prefix=/home/dabai/isl --with-gmp-prefix=/home/dabai/gmp-4.3.2
$ make && make install
$ cd /home/dabai
$ tar -xzvf gcc-8.3.0.tar.gz
$ cd gcc-8.3.0
$ mkdir build && cd build
$ ../configure --prefix=/home/dabai/gcc-8.3.0 --with-gmp=/home/dabai/gmp-4.3.2 --with-mpfr=/home/dabai/mpfr-2.4.2 --with-mpc=/home/dabai/mpc-1.0.1 --with-isl=/home/dabai/isl --enable-checking=release --enable-languages=c,c++ --disable-multilib
$ make && make install
$ cd ~
$ vim .bashrc
export PATH=/home/dabai/gcc-8.3.0/bin:$PATH
$ source .bashrc
$ gcc --version
error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory
libmpfr.so.6
会存在/home/dabai/mpfr-2.4.2/lib
目录中。此时,我们可以手动添加该库的所在路径,即使用命令export LD_LIBRARY_PATH=/home/dabai/mpfr-2.4.2/lib
即可。简单介绍升级到更高的
gcc
版本gcc-11.3.0
,所需要的依赖包版本,并提供一键下载的链接。