glibc更换(patchelf方法)

获取不同版本glibc版本方法

这里使用自动化工具

https://github.com/matrix1001/glibc-all-in-one

使用方法也很简单

先./update_list获取glibc列表

cat查看可以下载的glibc版本

$ cat list
2.23-0ubuntu11.2_amd64
2.23-0ubuntu11.2_i386
2.23-0ubuntu3_amd64
2.23-0ubuntu3_i386
2.27-3ubuntu1.2_amd64
2.27-3ubuntu1.2_i386
2.27-3ubuntu1.4_amd64
2.27-3ubuntu1.4_i386
2.27-3ubuntu1_amd64
2.27-3ubuntu1_i386
2.31-0ubuntu9.2_amd64
2.31-0ubuntu9.2_i386
2.31-0ubuntu9_amd64
2.31-0ubuntu9_i386
2.32-0ubuntu3.1_amd64
2.32-0ubuntu3.1_i386
2.32-0ubuntu3_amd64
2.32-0ubuntu3_i386
2.33-0ubuntu4_amd64
2.33-0ubuntu4_i386

./download指定版本glibc即可下载,默认源是清华源,速度也很给力,并且符号表存入对应 libc 的 “.debug” 文件夹中。

$ ./download 2.27-3ubuntu1.2_amd64
Getting 2.27-3ubuntu1.2_amd64
  -> Location: https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/libc6_2.27-3ubuntu1.2_amd64.deb
  -> Downloading libc binary package
  -> Extracting libc binary package
  -> Package saved to libs/2.27-3ubuntu1.2_amd64
  -> Location: https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/libc6-dbg_2.27-3ubuntu1.2_amd64.deb
  -> Downloading libc debug package
  -> Extracting libc debug package
  -> Package saved to libs/2.27-3ubuntu1.2_amd64/.debug

下载完glibc的文件夹在lib里面,链接器和动态库文件都在里面了。

在这里插入图片描述

patchelf改变程序链接器和动态库

https://github.com/NixOS/patchelf

./bootstrap.sh
./configure
make
make check
sudo make install

可能会遇到 autoreconf: not found

安装一下就好啦

sudo apt-get install autoconf automake libtool

打patch方法,两种都可以

第一种,改变链接器+改变搜索路径

例子

patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --set-rpath ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64 target_file

第二种,改变链接器+直接改变动态库的路径

例子

patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --replace-needed libc.so.6 ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/libc.so.6 target_file

个人感觉第一种会好一点,万一动态库有好多个,那第二种就需要手动一个一个设置了。

参考文章

https://bbs.pediy.com/thread-254868.htm

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值