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

Ubuntu 22.04编译安装Glibc 2.39后,如何让ldd指向新版本?

问题

我当前运行Ubuntu 22.04虚拟机,系统默认搭载Glibc 2.35版本。出于安全漏洞修复需求,我尝试将其升级至2.39版本。

我已按照以下步骤下载源码包并完成编译安装:

sudo apt-get install gawk bison -y
wget -c https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.gz
tar -zxvf glibc-2.39.tar.gz && cd glibc-2.39
mkdir glibc-build && cd glibc-build
../configure --prefix=/opt/glibc-2.39
make 
sudo make install

编译安装过程成功完成,以下是标准输出的最后10行内容:

#23 43.04 if test -r /opt/glibc/include/gnu/stubs-64.h && cmp -s /root/workspace/teams/glibc-2.39/glibc-build/stubs.h /opt/glibc/include/gnu/stubs-64.h; \
#23 43.04 then echo 'stubs.h unchanged'; \
#23 43.04 else /usr/bin/install -c -m 644 /root/workspace/teams/glibc-2.39/glibc-build/stubs.h /opt/glibc/include/gnu/stubs-64.h; fi
#23 43.05 rm -f /root/workspace/teams/glibc-2.39/glibc-build/stubs.h
#23 43.05 test ! -x /root/workspace/teams/glibc-2.39/glibc-build/elf/ldconfig || LC_ALL=C \
#23 43.05   /root/workspace/teams/glibc-2.39/glibc-build/elf/ldconfig  \
#23 43.05           /opt/glibc/lib /opt/glibc/lib
#23 43.07 make[1]: Leaving directory '/root/workspace/teams/glibc-2.39'
#23 DONE 43.4s

但执行ldd --version命令后,仍显示旧版本2.35。请问如何配置才能让ldd识别我新编译安装的Glibc库?

解决方法

ldd本质是调用系统默认动态链接器的脚本,默认关联系统自带的Glibc 2.35,所以直接运行会显示旧版本。以下是几种配置方式:

临时查看新版本(仅当前终端会话)

直接用新Glibc的动态链接器运行ldd:

/opt/glibc-2.39/lib/ld-linux-x86-64.so.2 --library-path /opt/glibc-2.39/lib /usr/bin/ldd --version

执行后即可看到Glibc 2.39的版本信息。

当前用户终端默认使用新Glibc(永久生效)

编辑用户bash配置文件~/.bashrc,添加环境变量:

export LD_LIBRARY_PATH=/opt/glibc-2.39/lib:$LD_LIBRARY_PATH
export PATH=/opt/glibc-2.39/bin:$PATH

保存后重新加载配置:

source ~/.bashrc

之后在该用户终端运行ldd --version会显示新版本。注意:这种方式可能导致部分系统工具异常,因为部分系统命令依赖旧版Glibc,需谨慎测试。

全局替换系统默认Glibc(高风险)

如果要让整个系统默认使用新Glibc,可替换系统动态链接器的软链接,但此操作风险极高,可能导致系统无法启动,需先备份原文件:

# 备份原动态链接器
sudo cp /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2.bak
# 创建指向新Glibc的软链接
sudo ln -sf /opt/glibc-2.39/lib/ld-linux-x86-64.so.2 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2

若系统出现异常,需进入救援模式恢复备份的文件。

仅让特定程序使用新Glibc

如果不想全局修改,仅需指定程序使用新Glibc,可通过以下命令运行程序:

/opt/glibc-2.39/lib/ld-linux-x86-64.so.2 --library-path /opt/glibc-2.39/lib /path/to/your/program

内容的提问来源于stack exchange,提问作者Piyush Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:05:04