绝命中的一助linux程序加载器ld-linux.so中的LD_PRELOAD预加载库
来源:互联网 发布:手机淘宝 天天特价 编辑:程序博客网 时间:2024/05/02 19:08
偶然错误的将linux系统中的libc.so.6链接删除,导致busybox所有cmd命令失效,报load library error.最终的解决方法是采用预加载库的方式来解决这个问题:
LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so libc.so.6
根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-linux.so这个程序加载器(该so路径需要通过ELF直接确定,且不依赖其他库),然后再解析elf中需要load的共享库,但这之前可以通过LD_PRELOAD来提前预先加载共享库,如果程序允许需要的未初始化symbol在预加载库中的话,就不会再load needed的共享库(如果预先加载的库也不满足运行需要,则继续根据编译时symbol所needed关系来load对应的so库,如果库查找后不存在就报load error。
预先加载so库的好处:避免了程序运行时所谓的库缺失,可以理解为是一种半自动的so加载过程,需要LD_PRELOAD变量来指定真实的库路径。当前,所有一切的功劳都是ld-linux的魅力所在。
0 0
- 绝命中的一助linux程序加载器ld-linux.so中的LD_PRELOAD预加载库
- 关于加载器ld-linux-armhf.so.3
- 深入理解LINUX下动态库链接器/加载器ld-linux.so.2
- 深入理解LINUX下动态库链接器/加载器ld-linux.so.2
- linux中的ld.so.conf文件
- linux 中的动态库加载
- linux 中的动态库加载
- linux程序自启动无法加载so库问题
- linux下生成.so并运行程序加载该.so
- c++ 加载so动态库中的资源
- 加载SD卡中的SO库
- 浅谈linux中的模块加载
- 浅谈linux中的模块加载
- Linux 动态连接加载器 ld-linux用法
- ld加载so路径设置
- Android动态加载补充 加载SD卡中的SO库
- Android动态加载补充 加载SD卡中的SO库
- Android动态加载补充 加载SD卡中的SO库
- iOS中如何让多个空格替换成一个空格
- Java代理设计模式详解
- PHP菜鸟如何开始学习PHP语言
- PHP Warning: mkdir() [function.mkdir]: Permission denied in解决方法
- 乐视发布三款第4代超级电视 打造大屏游戏生态
- 绝命中的一助linux程序加载器ld-linux.so中的LD_PRELOAD预加载库
- 宏定义中是使用 const 还是 使用 define
- Java maven项目整合Redis
- invalid table alias
- 普通用户将计算机加入到域的数量上限是10
- ViewPager无限轮播
- windows服务器和linux服务器ftp取数shell脚本
- ios判断手机中是否安装了某个App
- 译马网微视角丨行精益之道,铸沟通之魂