编译 GCC 4.8.0 时出现 Bootstrap 错误

编译 GCC 4.8.0 时出现 Bootstrap 错误

我在尝试安装 GCC 时遇到了引导错误,需要一些帮助。我尝试在共享系统(集群)上的主目录中编译 GCC。集群有 GCC 4.4.3,我用它来引导编译。我写了这个小脚本来展示我正在做的事情并帮助调试:

# Installation parameters
gccver=4.8.0
gmpver=5.1.1
mpcver=1.0.1
mpfrver=3.1.2
prefix=$HOME/local
langs=c,c++

# Download source
wget ftp://gnu.mirror.iweb.com/gnu/gcc/gcc-${gccver}/gcc-${gccver}.tar.gz
wget ftp://ftp.gnu.org/gnu/gmp/gmp-${gmpver}.tar.bz2
wget ftp://ftp.gnu.org/gnu/mpc/mpc-${mpcver}.tar.gz
wget ftp://ftp.gnu.org/gnu/mpfr/mpfr-${mpfrver}.tar.gz

# Unpack source
tar -xzvf gcc-${gccver}.tar.gz
tar -xjvf gmp-${gmpver}.tar.bz2
tar -xzvf mpc-${mpcver}.tar.gz
tar -xzvf mpfr-${mpfrver}.tar.gz

# Move dependency source directories into gcc source directory
mv gmp-${gmpver} gcc-${gccver}/gmp
mv mpc-${mpcver} gcc-${gccver}/mpc
mv mpfr-${mpfrver} gcc-${gccver}/mpfr

# create a build directory and change to it
mkdir objdir
pushd objdir

# configure, make, check, and install gcc:
../gcc-${gccver}/configure --prefix=${prefix} --enable-languages=${langs}
make -j 16
make install

# return to the original directory
popd

上述操作在“make”过程中失败,错误信息为:“Bootstrap 比较失败!”我已将最后几页输出上传为错误.txt,并且配置日志从配置阶段开始。我尝试过:

  1. 从 objdir运行make distclean并重新运行 configure 和 make。
  2. -j 16从 中移除make
  3. 调用配置时使用绝对路径。
  4. 使用contrib/download_prerequisites脚本下载mpfr-2.4.2、gmp-4.3.2和mpc-0.8.1,而不是上面的较新版本。
  5. 将 PWDCMD 环境变量设置为自动挂载程序感知的 pwd 命令 (pawd)。
  6. 使用不同版本的 GCC (3.4.6) 进行引导。
  7. export CC=icc通过和使用 ICC 12.0.0 进行引导export CXX=icpc

我也尝试将这个问题发布到 gcc 邮件列表;在那里我收到了上述建议 (2)。

知道为什么这次构建会失败吗?

答案1

您也可以直接尝试make bootstrapmake bootstrap4代替make install,看看是否会产生任何差异。

答案2

尝试make distclean再次执行./configure && make

在这里看到类似的问题: https://stackoverflow.com/questions/8651547/error-compiling-the-compiler-gcc

答案3

负责该系统的 Chuck Norris 构建者使用以下步骤构建了 GCC 4.8.0:

module purge
cd /tmp/repoman
tar xzf ~/src/gnu/gcc-4.8.0.tar.gz
cd gcc-4.8.0/
tar xzf ~/src/gnu/mpfr-2.4.2.tar.gz
ln -s mpfr-2.4.2 mpfr
tar xzf ~/src/gnu/gmp-4.3.2.tar.gz
ln -s gmp-4.3.2 gmp
tar xzf ~/src/gnu/mpc-0.8.1.tar.gz
ln -s mpc-0.8.1 mpc
cd ../
mkdir objdir
cd objdir/
../gcc-4.8.0/configure --prefix=/usr/local/gcc-4.8.0 CC=gcc4 CXX=g++4
make && make install

这和我做的很相似。不同之处在于我没有做module purge,我mv'd 了先决条件源而不是ln -s'ing 它们,我没有指定CC=gcc4 CXX=g++4,而且显然我的--prefix指向了我的主目录中的路径。我不确定其中哪一个会产生影响;可能是CC=... CXX=...module purge。我会测试并发布结果。

相关内容