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所有具体使用方法