目录

  • 1. 前言
  • 2. 安装文件准备
  • 3. 安装
  • 3.1安装GMP
  • 3.2安装MPFR
  • 3.3安装MPC
  • 3.4安装GCC
  • 4.GCC版本切换
  • 5.参考资料


1. 前言

当前设备已经安装了GCC-5.4.0(可执行文件位于 /usr/bin 目录,头文件位于 /usr/include 目录,库文件位于 /usr/lib 目录),在不删除现有编译器的条件下安装GCC-9.3.0,便于后续根据需要切换不同版本的编译器。

2. 安装文件准备

GCC-9.3.0依赖GMP(The GNU Multiple Precision Arithmetic Library)、MPFR(Multiple-Precision Floating-Point Library)、MPC(Multi-Precision C Library)三个库,由于这三个库也存在相互依赖关系,整体的安装顺序应为GMP–>MPFR–>MPC–>GCC.
这里给出这些库的下载地址,可根据需要选择对应版本下载。

3. 安装

3.1安装GMP

我下载的版本为gmp-6.2.1,source文件位于/home/gmp-6.2.1目录。为了便于后续对库管理与删除,新建 /usr/local/gmp-6.2.1 目录,并将gmp库安装于此目录,安装指令如下

cd /home/gmp-6.2.1
./configure --prefix=/usr/local/gmp-6.2.1
make -j8
make install -j8
  • [第2行] –prefix=/usr/local/gmp-6.2.1:指定gmp库的安装目录,也可以不指定安装目录,编译器默认将可执行文件存放于 /usr/local/bin 目录,库文件存放于 /usr/local/lib 目录,头文件存放于/usr/local/include 目录
  • [第3行] make -j8:数字8指定并行执行编译的任务数量,具体数值根据设备核心数量配置

3.2安装MPFR

我下载的版本为mpfr-4.1.1,source文件位于/home/mpfr-4.1.1目录。为了便于后续对库管理与删除,新建 /usr/local/mpfr-4.1.1 目录,并将mpfr库安装于此目录,安装指令如下

cd /home/mpfr-4.1.1
./configure --prefix=/usr/local/mpfr-4.1.1 --with-gmp-include=/usr/local/gmp-6.2.1/include --with-gmp-lib=/usr/local/gmp-6.2.1/lib
make -j8
make install -j8
  • [第2行] –prefix=/usr/local/mpfr-4.1.1:指定MPFR库的安装目录。也可以不指定安装目录,编译器默认将可执行文件存放于 /usr/local/bin 目录,库文件存放于 /usr/local/lib 目录,头文件存放于/usr/local/include 目录
  • 由于MPFR库依赖GMP库,因此需要–with命令指定GMP库的头文件目录和库文件目录。
  • [第2行] –with-gmp-include=<your gmp include path>:指定GMP库的头文件目录
  • [第2行] –with-gmp-lib=<your gmp lib path>:指定GMP库的库文件目录
  • 当然,如果GMP库选择默认方式安装,可不指定这些目录,编译器将在 /usr/include 和 /usr/local/lib 目录中搜索GMP库的头文件和库文件

3.3安装MPC

我下载的版本为mpc-1.3.1,source文件位于/home/mpc-1.3.1目录。为了便于后续对库管理与删除,新建 /usr/local/mpc-1.3.1 目录,并将mpc库安装于此目录,安装指令如下

cd /home/mpc-1.3.1
./configure --prefix=/usr/local/mpc-1.3.1 --with-gmp-include=/usr/local/gmp-6.2.1/include --with-gmp-lib=/usr/local/gmp-6.2.1/lib --with-mpfr-include=/usr/local/mpfr-4.1.1/include --with-mpfr-lib=/usr/local/mpfr4.1.1/lib
make -j8
make install -j8
  • [第2行] –prefix=/usr/local/mpc-1.3.1:指定MPC库的安装目录。也可以不指定安装目录,编译器默认将可执行文件存放于 /usr/local/bin 目录,库文件存放于 /usr/local/lib 目录,头文件存放于 /usr/local/include 目录
  • 由于MPC库依赖GMP库和MPFR库,因此需要–with命令指定GMP库和MPFR库的头文件目录和库文件目录。当然,如果GMP库和MPFR库选择默认方式安装,可不指定这些目录,编译器将在 /usr/include 和 /usr/local/lib 目录中搜索GMP库和MPFR库的头文件和库文件。

3.4安装GCC

gcc的source文件位于 /home/gcc-9.3.0 目录。为了便于后续对库管理与删除,新建 /usr/local/gcc-9.3.0 目录,并将gcc库安装于此目录,安装指令如下

cd  /home/gcc-9.3.0
./configure --prefix=/usr/local/gcc-9.3.0 --with-gmp-include=/usr/local/gmp-6.2.1/include --with-gmp-lib=/usr/local/gmp-6.2.1/lib --with-mpfr-include=/usr/local/mpfr-4.1.1/include --with-mpfr-lib=/usr/local/mpfr4.1.1/lib --with-mpc-include=/usr/local/mpc-1.3.1/include --with-mpc-include=/usr/local/mpc-1.3.1/lib
make -j8
make install -j8
  • [第2行] –prefix=/usr/local/gcc-9.3.0:指定GCC库的安装目录。也可以不指定安装目录,编译器默认将可执行文件存放于 /usr/local/bin 目录,库文件存放于 /usr/local/lib 目录,头文件存放于 /usr/local/include 目录。这样做将覆盖原有的GCC-5.4.0编译器
  • 由于GCC库依赖MPC库、GMP库和MPFR库,因此需要–with命令指定这些库的头文件目录和库文件目录。当然,如果这些库选择默认方式安装,可不指定这些目录,编译器将在 /usr/include 和 /usr/local/lib 目录中搜索这些库的头文件和库文件。

4.GCC版本切换