首页 > 系统相关 >Ubuntu切换glibc版本

Ubuntu切换glibc版本

时间:2023-04-05 18:11:35浏览次数:37  
标签:bin gcc -- glibc 切换 install Ubuntu usr

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

标签:bin,gcc,--,glibc,切换,install,Ubuntu,usr
From: https://www.cnblogs.com/nemuzuki/p/17290156.html

相关文章

  • 如何在ubuntu22下安装docker版的golang来编译go语言写的代码
    为了让我们的ubuntu22系统更干净清爽我们使用docker首先使用snapinstalldocker安装docker后即可使用docker了docker命令的使用方法1:将你的代码下载到用户目录(~)下面(例如~/github/xixi/...)2:使用cd命令进到你代码需要运行gobuild的文件夹3:然后使用下面命令即可给你的代码编译......
  • Ubuntu10.04下配置和使用JDK-Mysql-Tomcat-SVN
    操作系统:Linux-Ubuntu10.0.4,JDK:1.61.安装JDK和设置Java环境变量1.1安装JDKa.下载JDKjdk-6u31-linux-x64.bin,具体下载哪个,根据自己的平台和系统来决定b.修改权限,增加可执行权限sudochmodu+xjdk-6u31-linux-x64.binc.进入到jdk-6u31-linux-x64.bin所在的目录./jdk-6u31-linux-x......
  • ubuntu虚拟机(vmware)设置静态ip
    最近家里的虚拟机ip每次打开电脑都会变化,为了防止不必要的麻烦,这里记录一下设置静态ip的方式首先还是查看一下虚拟机当前的ip使用ifconfig如下所示一般如果用的是vmware的虚拟机的话,网关最后一个会是.2,正常情况都是如此,当然保险起见可以看一下,在编辑中查看虚拟网络编辑器,之......
  • windows子系统ubuntu2204 wsl2
    前提:windows内核版本支持wsl2(目前是内部版本不能低于19041)查看命令(cmd/powershell):winver1.wsl1不需要内核虚拟化和hyper-v,wsl2需要内核虚拟化支持并启用hyper-v所以可能使用wsl1时,可以创建虚拟机,但是启用wsl2就会报错,提示:未开启bios虚拟化或hyper-v启用wsldism.exe/onlin......
  • 联想拯救者Y9000P 2023版 双系统ubuntu安装nvidia显卡驱动、cuda及cudnn简明教程
    前言对于从事机器学习、深度学习、图像处理、自然语言处理等科研与工作的小伙伴们,ubuntu系统是一个不错的选择,本人前几天入手拯救者y9000p2023版本,配置为:RTX406016G13代i913900HX,由于我从事智能驾驶工作,电脑到之后就安装了ubuntu双系统,本篇文章将为大家介绍一下ubuntu安装nvi......
  • 迎接Ubuntu Flatpak Remix,预装了Flatpak支持的Ubuntu
    导读太快了!在Canonical宣布未来的Ubuntu版本默认不包括Flatpak支持之后,已经有人制作了一个非官方的Ubuntu版本,预装了对Flatpak应用的支持,并且开箱即用,名为UbuntuFlatpakRemix。这是UbuntuFlatpakRemix,一个非官方的Ubuntu衍生品,不支持Snap应用程序,但支持Flatpak应用......
  • TortoiseGit如何更换(切换)用户名和密码
     使用场景:   项目开发过程中,更换了新的办公电脑,TortoiseGit如何切换用户名和密码,具体操作步骤如下 步骤: 1、打开电脑上面的控制面板,找到其中的“凭据管理器”,并点击进入; 2、进入凭据管理器之后,选择其中的“Windows凭据”,点击进入;  3、然后普通凭据中的要......
  • 利用bat文件在命令行进行代理切换
    命令行里,用python也好,用scoop也好,用git也好,总是需要用代理搞一下。看到有篇博客写了一个简单的函数,用来做命令行的开关,于是我也仿着人家写了一个bat,用来做cmd的代理开关。其中遇到了一些小坑,稍微趟了一下,哎,可能powershell就没这么多破事了吧。批处理的语法实在是太原始了,脑壳......
  • ubuntu使用vnstat监控网络流量
    https://askubuntu.com/questions/1459/how-can-you-monitor-total-internet-data-usage-across-rebootshttps://www.booleanworld.com/monitor-network-traffic-linux-using-vnstat/......
  • gnvm随意切换node版本
    前言:目前公司前端项目正在逐步向vue3转移,但是很多老的vue2项目还是需要维护,这时候就遇见了一个问题,vue3中很多库需要v16+的node版本,而很多老的vue2项目中的插件是需要稍微低一点的node版本(例如老项目中的node-sass库),如果一下就让所有项目的开发成员都把node版本升级到v16+,然后再把......