简介
最近在静态库合并上也踩坑了,真是头疼
存在的问题
合并库有两种方式:libtool
和ar
,但是libtool
一直合并失败
所以这里使用ar
来合并
通常做法就是ar -x
和ar -qc
,但是因为涉及到合并交叉编译的库,所以这个ar
命令一定不要用系统自带的,要使用ndk
里的ar
就像下面这样:
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -x libx.a
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -x liby.a
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -qc libnew.a *.o
就跟解压缩差不多
但是等合并完放到Android Studio
中编译时却出错了:
error: undefined reference to 'xxx'
... ...
就很难受,还好找到了解决办法
解决办法
使用mri
脚本进行合并操作
-
创建
mri
脚本create libnew.a addlib libx.a addlib liby.a save end
保存为
combine.mri
-
执行脚本
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -M <libaz.mri
这样就能够正常调用了
如果有什么问题或建议,欢迎留言~