标签: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。
标签:pre name stat 成功 假设 patch ati 总结 pat
原文地址:https://www.cnblogs.com/bingblogs/p/13662156.html