最稳的方法不是手敲,而是复制到脚本里,先检查,再执行。这样能避免漏字符、中文横线、反斜杠后带空格等问题。
先进入 GCC 的build目录:
cd"$LFS/sources/gcc-14.2.0/build"创建配置脚本:
cat>configure-gcc-pass1.sh<<'EOF' #!/usr/bin/env bash set -euo pipefail : "${LFS:?LFS 未设置}" : "${LFS_TGT:?LFS_TGT 未设置}" ../configure \ --target="$LFS_TGT" \ --prefix="$LFS/tools" \ --with-glibc-version=2.41 \ --with-sysroot="$LFS" \ --with-newlib \ --without-headers \ --enable-default-pie \ --enable-default-ssp \ --disable-nls \ --disable-shared \ --disable-multilib \ --disable-threads \ --disable-libatomic \ --disable-libgomp \ --disable-libquadmath \ --disable-libssp \ --disable-libvtv \ --disable-libstdcxx \ --enable-languages=c,c++ EOF先只做语法检查:
bash-nconfigure-gcc-pass1.sh没有输出就表示 Shell 语法正确。
再检查变量:
echo"$LFS"echo"$LFS_TGT"应该是:
/mnt/lfs x86_64-lfs-linux-gnu然后执行:
bashconfigure-gcc-pass1.sh2>&1|teeconfigure.log成功后检查:
test-fMakefile&&echo"configure 成功"grep-iE'error|unrecognized|not found'configure.log如果最后一条没有输出,通常就没问题。
接着编译时也保存日志:
make-j42>&1|teemake.log只有make返回成功后再安装:
makeinstall2>&1|teeinstall.log再验证:
type-a"$LFS_TGT-gcc""$LFS_TGT-gcc"--version"$LFS_TGT-gcc"-dumpmachine"$LFS_TGT-gcc"-print-sysroot最重要的三个习惯:
- 长命令放进脚本,不要手敲。
- 每一步都用
tee保存日志。 make失败后不要直接make install。