码迷,mamicode.com
首页 > 其他好文 > 详细

jni之动态库的加载

时间:2020-09-18 00:06:04      阅读:29      评论:0      收藏:0      [点我收藏+]

标签:pre   name   stat   成功   假设   patch   ati   总结   pat   

一项目中,使用了多个动态库,且动态库之间存在依赖关系,假设为a.so及b.so,且b.so依赖于a.so。

在使用

static {
    System.load(“a.so”);
    System.load(“b.so”);
}

进行动态库加载的时候,始终提示b库加载失败,称找不到依赖a,但是显然第一部就加载了a,且加载成功。

 

几经周折发现,a的SONAME不为a,而是"_a"。加载过程中,系统分析动态库的依赖关系不是基于文件名而是SONAME。

 

总结:使用“readelf”命令可以查看so库的SONAME及依赖关系;使用“patchelf”命令可以修改动态库的SONAME。

jni之动态库的加载

标签:pre   name   stat   成功   假设   patch   ati   总结   pat   

原文地址:https://www.cnblogs.com/bingblogs/p/13662156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!