我当前正在运行 Ubuntu 22.04 虚拟机。默认情况下它有 Glibc 2.35。由于安全漏洞,我正在尝试将其升级到2.39。
我按照以下步骤下载 gzip 压缩的二进制文件并在我的系统上编译它:
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 库?
从您构建的目录中调用
ldd
:/opt/glibc-2.39/bin/ldd
。
您的下一个问题可能是:“我已经设置了
LD_LIBRARY_PATH=/opt/glibc-2.39/lib64
,但我的应用程序因 SIGSEGV
崩溃(或由于其他原因无法运行)”。
如果是这样,请参阅此答案。