使用指定的glibc

5 篇文章 0 订阅

在当前测试程序路径下执行:

可以先ldd 看看libgcc_s.so.1 和libstdc++.so.6 用到那个路径下的,
在当前路径下创建软链接到特定动态库:

ln -s /lib64/libgcc_s-4.8.5-20150702.so.1 libgcc_s.so.1
ln -s /lib64/libstdc++.so.6.0.19 libstdc++.so.6

方式一: 执行程序:

LD_PRELOAD=/data/glibc-2.28/lib/libc.so.6 LD_LIBRARY_PATH=./ /data/glibc-2.28/lib/ld-2.28.so ./test

方式二
上面那种方式,如果把glibc 拷贝到其他机器,程序运行可能会有点问题,我们怀疑还是库的引用不全导致, 可以使用下面这种方式:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

PATH 填上glibc/lib 路径和当前路径,例如:. ./glibc/lib/ld-linux-x86-64.so.2 --library-path …/glibc/lib/:./ ./test

–library-path

注:

LD_PRELOAD (not LD_PRELOAD_PATH) is a list of specific libraries
(files) to be loaded before any other libraries, whether the program
wants it or not. LD_LIBRARY_PATH is a list of directories to search
when loading libraries that would have been loaded anyway. On linux
you can read man ld.so for more information about these and other
environment variables that affect the dynamic linker.

LD_PRELOAD 和LD_LIBRARY_PATH 的区别:

LD_PRELOAD(不是LD_PRELOAD_PATH)是要在任何其他库加载之前加载的特定库(或文件)的列表,无论程序是否需要。 LD_LIBRARY_PATH是在加载本来应该已经加载的库时要搜索的目录的列表。

参考:
【Linux】LD_PRELOAD用法
linux平台LD_PRELOAD及其机制的一种技术
关于不同版本 glibc 更换的一些问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值