当前位置:操作系统 > 安卓/Android >>

Android加载动态库失败分析

最近在做Android上的多媒体开发,通过JNI接口调用各种底层库,例如:lib***.so
 
如下所示,总是加载不成功。调试发现,每次加载so库,会跳到catch异常处理部分,然后打印异常log信息。
 
1.static{    
 2.    try{  
 3.        System.load("/data/data/com.***/lib/lib***.so");  
 4.    }    
 5.    catch(UnsatisfiedLinkError ulink){   
 6.        Log.i("HVnative====","Can not load library");  
 7.        ulink.printStackTrace();  
 8.    }  
 9.}  
 
 
发现网上可以用arm-none-linux-gnueabi-ld工具分析这个动态库,在ubuntu 10.04上安装arm-none-linux-gnueabi-gcc
 
方法参考文档:
 
 
http://blog.csdn.net/satiling/article/details/6914466
 
找到 arm-none-linux-gnueabi-ld执行程序,添加到系统环境变量:
 
1.vim /root/.bashrc
 
2.PATH=$PATH:绝对路径
 
3.source  /root/.bashrc 使环境变量立即生效,分析工具搞定!
 
如果“undefined reference to” 后面打印的函数是:
 
1、你自己写的函数,那么你应该去检查自己所写的这段代码有何问题,修改之后,再重新编译底层库;
 
2、系统函数,暂时还没找到合适的解决办法,自己上网度狗吧,正在努力寻求方法。
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,