Ubuntu切换glibc版本
Ubuntu切换glibc版本
glibc是GNU发布的C语言标准库,不同版本的glibc中函数实现不同,可能导致程序运行结果不同。这里介绍如何切换不同版本的glibc来运行程序
首先,要安装patchelf,这是给elf文件打补丁(修改elf文件属性,包括使用的glibc版本)的工具
git clone https://github.com/NixOS/patchelf.git cd patchelf ./bootstrap.sh ./configure make make check sudo make install
注意,如果make时报很多错,是因为gcc和g++版本过低,使用如下命令可以从gcc/g++7升级到11
sudo apt-get install gcc-11 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/g++-7 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/g++-11 50 sudo apt-get install g++-11 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 50
接下来安装glibc-all-in-one来下载我们需要的glibc,这里以下载glibc2.23为例。注:ldd --version
可以查看当前glibc版本
git clone https://github.com/matrix1001/glibc-all-in-one cd glibc-all-in-one/ python3 update_list cat list ./download 2.23-0ubuntu11.3_amd64
最后就是给我们的程序打补丁了,将patchelf命令中两个路径换成本地glibc对应的路径,最后是要打补丁的程序名,运行即可
gcc -g test.c -o test patchelf --set-interpreter /home/mika/Downloads/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/ld-2.23.so --set-rpath /home/mika/Downloads/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64 test ./test
分类:
linux
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战