LFS 7.6 GCC 出现错误

LFS 7.6 GCC 出现错误

我对 Linux 系统没有太多经验,但我决定在 LFS 系统上工作一段时间。我知道对于我有限的知识来说这是一项艰巨的任务,但我以为我是理解的,直到我遇到这个问题。我试图为 LFS 书 7.6 的第 5 章构建 GCC 这是我的命令序列:

cd /mnt/lfs/sources
tar -xvf gcc-4.9.1.tar.bz2
cd gcc-4.9.1
tar -xf ../mpfr-3.1.2.tar.xz
mv -v mpfr-3.1.2 mpfr
tar -xf ../gmp-6.0.0a.tar.xz
mv -v gmp-6.0.0 gmp
tar -xf ../mpc-1.0.2.tar.gz
mv -v mpc-1.0.2 mpc

for file in \
$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
-e 's@/usr@/tools@g' $file.orig > $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
touch $file.orig
done

sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c
mkdir -v ../gcc-build
cd ../gcc-build

../gcc-4.9.1/configure --target=$LFS_TGT --prefix=/tool --with-sysroot=$LFS --with-newlib --without-headers --with-local-prefix=/tools --with-native-system-header-dir=/tools/include --disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads --disable-libatomic --disable-libgomp --disable-libitm --disable-libquadmath --disable-libsanitizer --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libstdc++-v3 --enable-languages=c,c++ -v
make

运行 make 一段时间后,我在输出末尾得到以下内容:

checking for i686-lfs-linux-gnu-ranlib... i686-lfs-linux-gnu-ranlib
checking for i686-lfs-linux-gnu-strip... i686-lfs-linux-gnu-strip
checking whether ln -s works... yes
checking for i686-lfs-linux-gnu-gcc... /mnt/lfs/sources/gcc-build/./gcc/xgcc -B/mnt/lfs/sources/gcc-build/./gcc/ -B/tool/i686-lfs-linux-gnu/bin/ -B/tool/i686-lfs-linux-gnu/lib/ -isystem /tool/i686-lfs-linux-gnu/include -isystem /tool/i686-lfs-linux-gnu/sys-include   
checking for suffix of object files... configure: error: in `/mnt/lfs/sources/gcc-build/i686-lfs-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
Makefile:11636: recipe for target 'configure-target-libgcc' failed
make[1]: *** [configure-target-libgcc] Error 1
make[1]: Leaving directory '/mnt/lfs/sources/gcc-build'
Makefile:850: recipe for target 'all' failed
make: *** [all] Error 2

有谁知道我做错了什么?我确信我做得对,但同样,我对此类事情没有那么丰富的经验。感谢您的时间。

答案1

配置脚本正在尝试编译测试但失败。将config.log包含实际的编译错误。

最可能的原因是您的主机系统上没有安装 libmpfr、libgmp 或 libmpc 之一。确保-dev使用主机系统的包管理器安装这些库的包。它们包含这三个库的头文件。

相关内容