编译glibc 2.42时提示GNU ld compiler缺失/过旧的问题求助
解决SLES 15 SP6编译glibc 2.42时的GNU ld版本不足问题
问题根源
glibc 2.42对GNU ld的最低版本要求是2.37,你当前使用的GNU ld version 2.35.2-43.0.1.el9版本不满足要求,这就是配置时报错的直接原因。
可行解决方案
1. 从源码编译新版binutils(推荐)
- 下载binutils 2.37及以上版本的源码包(比如2.40稳定版)
- 解压后进入源码目录,执行配置命令时开启多架构支持(适配32位编译需求):
./configure --prefix=/usr/local/binutils --enable-multilib - 编译并安装:
make -j$(nproc) sudo make install - 将新版binutils的bin目录加入PATH优先级最高位置:
export PATH=/usr/local/binutils/bin:$PATH - 验证ld版本:
ld --version,确认显示2.37+
2. 通过SUSE扩展源安装新版binutils
- 启用SLES 15 SP6的扩展更新源(比如SUSE Package Hub)
- 安装适配的新版binutils包,同时确保安装32位支持组件:
sudo zypper install binutils binutils-32bit - 安装完成后验证ld版本是否达标
3. 配置glibc时指定新版ld路径
如果已经通过其他方式获取了符合要求的ld,可在glibc配置阶段直接指定路径:
../configure --enable-multilib --with-ld=/path/to/your/new/ld
32位glibc编译额外注意事项
- 确保系统已安装32位基础开发依赖:
sudo zypper install glibc-devel-32bit gcc-32bit - 配置glibc时必须添加
--enable-multilib参数,确保生成同时支持32位和64位的库
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

