You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04.1上glibc 2.40执行make check出错的原因排查

问题原因分析
  1. 系统glibc版本不兼容:Ubuntu 22.04.1默认自带glibc 2.35,而编译的glibc 2.40生成的localedef依赖GLIBC_2.38和GLIBC_ABI_DT_RELR,这些版本符号在系统库中不存在,导致运行时版本匹配失败。
  2. 缺失X11依赖库:编译过程中locale相关功能引入了X11依赖,系统未安装libx11-dev包,导致libX11.so.6无法找到。
  3. LD_LIBRARY_PATH设置错误导致段错误:系统ldd工具本身依赖系统glibc,强行让它加载新编译的glibc库,会引发库版本冲突,直接导致核心转储。
解决方法

1. 安装缺失的X11依赖包

执行以下命令安装libx11-dev,解决libX11.so.6找不到的问题:

sudo apt update && sudo apt install libx11-dev

2. 使用新编译的glibc动态链接器运行程序

不要直接用系统环境运行新编译的localedef,需指定新glibc的动态链接器和库路径:

# 手动生成C.UTF-8 locale
/home/xray/Documents/sw/glibc-2.40_build/lib/ld-linux-x86-64.so.2 \
  --library-path /home/xray/Documents/sw/glibc-2.40_build/lib \
  /home/xray/Documents/sw/glibc-2.40_build/locale/localedef -i C -f UTF-8 C.UTF-8

或者在执行make check时,指定测试程序使用新glibc:

make check \
  LD_LIBRARY_PATH=/home/xray/Documents/sw/glibc-2.40_build/lib \
  LD_PRELOAD=/home/xray/Documents/sw/glibc-2.40_build/lib/libc.so.6

3. 重新编译glibc,禁用不必要的X11依赖

如果不需要X11相关的locale功能,可以在配置编译时禁用,避免引入依赖:

cd /home/xray/Documents/sw/glibc-2.40_build
make clean
../glibc-2.40/configure --prefix=/usr/local/glibc-2.40 --disable-xlocale
make -j$(nproc)

--prefix指定安装路径,避免覆盖系统默认glibc;--disable-xlocale会移除X11相关依赖。

4. 正确检查新编译程序的依赖

不要用系统ldd检查新程序,改用新glibc的动态链接器查看依赖:

/home/xray/Documents/sw/glibc-2.40_build/lib/ld-linux-x86-64.so.2 --list /home/xray/Documents/sw/glibc-2.40_build/locale/localedef

内容的提问来源于stack exchange,提问作者New Student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:47:08