问题描述
GCC 在构建的过程中需要依赖于各种库和工具包,具体可以参考Prerequisites for GCC。而一般在编译 GCC 的过过程中最为常见的问题就是遇见 configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
错误。该错误出现在执行 configure
命令进行编译配置并生成 Makefile
的时候。要想解决这个问题,则我们必须提前编译好满足相应版本条件的 GMP 4.2+ (GNU Multiple Precision Library (GMP) version 4.3.2 (or later)), MPFR 3.1.0+ (MPFR Library version 3.1.0 (or later)) 和 MPC 0.8.0+ (MPC Library version 0.8.0 (or later)) 这三个库。
解决方法
1. 下载 GMP,MPFR,MPC
GCC在构建的过程中需要依赖于各种库和工具包,详细的内容请参考: Prerequisites for GCC 关于各种依赖包和工具的下载可以在下面链接所对应的文件目录中去找寻,也可以在各自的官网进行下载: https://gcc.gnu.org/pub/gcc/infrastructure/.
通过 wget
命令可以很简单的从 https://gcc.gnu.org/pub/gcc/infrastructure/ 下载GMP,MPFR,MPC这三个库的源代码压缩包文件。
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
注意安装顺序,因为依赖问题,所以首先安装GMP,然后是MPFR,然后是MPC
2.1. 编译GMP
编译的时候需要记录下 --prefix
参数的值,也就是我们自定义的gmp的安装目录,后面编译其他两个库和gcc的时候需要使用。
tar -xvjf gmp-6.2.1.tar.bz2
cd gmp-6.2.1/
./configure --prefix=$(pwd)
make
make install
2.2. 编译MPFR
注:/root/hj 为我自己服务器的绝对路径,各位可以按需修改;
tar -xvjf mpfr-4.1.0.tar.bz2
cd mpfr-4.1.0/
./configure --prefix=$(pwd) \
--with-gmp-include=/root/hj/gmp-6.2.1/include \
--with-gmp-lib=/root/hj/gmp-6.2.1/lib \
make
make install
2.3. 编译MPC
tar -xvzf mpc-1.2.1.tar.gz
cd mpc-1.2.1/
./configure --prefix=$(pwd) \
--with-gmp-include=/root/hj/gmp-6.2.1/include \
--with-gmp-lib=/root/hj/gmp-6.2.1/lib \
--with-mpfr-include=/root/hj/mpfr-4.1.0/include \
--with-mpfr-lib=/root/hj/mpfr-4.1.0/lib \
make
make install
2.4. 配置动态库 (so)到 LD_LIBRARY_PATH 环境变量
在终端运行下面命令可以将上面所编译好的三个库的动态库 (so)文件配置到 LD_LIBRARY_PATH 环境变量中,如果需要让配置永久生效,则需将下面的代码添加到 ~/.bashrc 文件中 并运行 source ~/.bashrc
命令即可。
export LD_LIBRARY_PATH=prefolder/gmp-6.2.1/lib:prefolder/mpfr-4.1.0/lib:prefolder/mpc-1.2.1/lib:$LD_LIBRARY_PATH
也看过很多别人的,但是这个是我认为正确的一篇文章