Solution: `GLIBC_2.xxx' not found”
2015-06-27 01:58
477 查看
Bypass:
Using the temp environment variable:env LD_LIBRARY_PATH=/path/to/correct/libc-xxx.so SomeProblemAPP appArgs
or
LD_LIBRARY_PATH=/path/to/correct/libc-xxx.so SomeProblemAPP appArgs
Find which function cause the problem:
Check Glibc version:objdump -p app
Find Glibc function:
nm app |grep GLIBC_2.xx #or objdump -T app |grep GLIBC_2.xx #or readelf -s app |grep GLIBC_2.xx
Linking to Older Versioned Symbols (glibc)
Using the version script feature of ld :Suppose the odd function is realpath, then add below line into the source file:
__asm__(".symver realpath,realpath@GLIBC_2.2.5");
so the source file will look like:
#include <limits.h> #include <stdlib.h> #include <stdio.h> __asm__(".symver realpath,realpath@GLIBC_2.2.5"); int main() { char* unresolved = "/lib64"; char resolved[PATH_MAX+1]; if(!realpath(unresolved, resolved)) { return 1; } printf("%s\n", resolved); return 0; }
ref:
http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_25.html
http://www.trevorpounds.com/blog/?tag=symbol-versioning
http://www.trevorpounds.com/blog/?p=103
相关文章推荐
- StoryBoards学习笔记-约束添加
- How to access body of Custom tags in JSP tutorial
- 在ubuntu上搭建android开发环境(3)——安装jdk
- apache nginx php不显示版本号
- [leetcode] Summary Ranges
- JSP Custom tags with example – JSP Tutorial
- 与文件系统及程序的限制关系: ulimit
- Docker网络详解
- 紫轩工作室傲视群雄
- 加载声音的过程
- windows下安装Tomcat服务
- Cross compile problem: cannot run test program while cross compiling
- 第四章作业4.21
- KVO、通知、代理、block
- 正则表达式精华(包涵常用经典方法)
- Android中ListView的几种常见的优化方法
- 使用Volley解析json
- drupal drupal drupal 你家养的猪娃跑了
- Django用自定义cookies 实现登录,注册,退出
- Android的EditText字数检测和限制