LFS编译用于构建glibc的GCC时遇链接测试错误,求解决
解决LFS 5.3章节编译交叉GCC时的"Link tests are not allowed"错误
错误原因
该错误出现在GCC stage2构建阶段,由于--with-newlib和--without-headers的配置限制了可执行文件生成,但libiberty、zlib等组件的配置脚本仍尝试执行链接测试(比如CET支持检测),从而触发规则冲突。
解决方案
方案1:添加环境变量跳过CET检测
在执行configure命令前,先设置环境变量跳过CET支持的链接测试:
export configure_cv_sys_cet=none
之后重新运行原configure命令,再执行make编译。
方案2:修改configure参数,禁用zlib相关组件
在原configure参数中新增--disable-libz,阻止zlib配置流程触发链接测试:
../configure \ --target=$LFS_TGT \ --prefix=$LFS/tools \ --with-glibc-version=2.38 \ --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 \ --disable-libz \ --enable-languages=c,c++
执行前需完全清理原有构建目录,避免旧缓存干扰:
cd /mnt/lfs/sources/gcc-13.2.0 rm -rf build mkdir build && cd build
方案3:确认宿主系统环境合规
- 检查宿主系统GCC版本≥11.2、binutils版本≥2.38,否则会出现兼容性问题
- 验证
$LFS和$LFS_TGT变量设置正确:echo $LFS # 应输出/mnt/lfs echo $LFS_TGT # 对应架构,例如x86_64-lfs-linux-gnu - 确保宿主系统已安装LFS手册要求的所有依赖包(如gmp、mpfr、mpc、isl,需安装到宿主系统或在GCC源码目录创建符号链接)
内容的提问来源于stack exchange,提问作者LinuxDefUser
相关产品推荐
相关产品推荐

