android开发修复第三方库生成的so库名称不是以so结尾的解决方法

需要ubuntu安装patchelf软件:sudo apt-get install patchelf

1. 先使用readelf -d查看so内容结构

先使用readelf -d libpsl.so.5.3.5 查看libpsl.so.5.3.5库类型是NEEDED和SONAME的对应的名称是不是以.so结尾的,比如下面的图,libc.so的名称是以.so结尾的我们就不用管,libpsl.so.5不是以.so结尾的我们就要处理一下

2. 处理SONAME对应的名称不是以.so结尾的解决方法

具体命令:patchelf --set-soname
比如:patchelf --set-soname libpsl.so libpsl.so.5.3.5

3. 处理NEEDED对应的名称不是以.so结尾的解决方法

具体命令:patchelf --replace-needed
比如: patchelf --replace-needed libm.so.6 libm.so libcholmod.so.3.0.13,即把其依赖的libm.so.6改为了libm.so //这里我们的库NEEDED类型暂时没这样名称的,直接拷贝了别人的

4. 最后修改so库的名称以.so结尾

mv libpsl.so.5.3.5 libpsl.so //或者直接手动重命名,mv就是重命名的意思

使用命令:patchelf --help 可以查看patchelf所有具体使用方法

参考链接:https://www.cnblogs.com/willhua/p/11479014.html

posted @ 2024-10-14 15:35  yongfengnice  阅读(23)  评论(0编辑  收藏  举报