我在尝试安装 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,并且配置日志从配置阶段开始。我尝试过:
- 从 objdir运行
make distclean
并重新运行 configure 和 make。 -j 16
从 中移除make
。- 调用配置时使用绝对路径。
- 使用
contrib/download_prerequisites
脚本下载mpfr-2.4.2、gmp-4.3.2和mpc-0.8.1,而不是上面的较新版本。 - 将 PWDCMD 环境变量设置为自动挂载程序感知的 pwd 命令 (pawd)。
- 使用不同版本的 GCC (3.4.6) 进行引导。
export CC=icc
通过和使用 ICC 12.0.0 进行引导export CXX=icpc
。
我也尝试将这个问题发布到 gcc 邮件列表;在那里我收到了上述建议 (2)。
知道为什么这次构建会失败吗?
答案1
您也可以直接尝试make bootstrap
或make 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
。我会测试并发布结果。