美文网首页
Android静态库合并问题及解决办法

Android静态库合并问题及解决办法

作者: 禄眠 | 来源:发表于2021-02-28 15:30 被阅读0次

    简介

    最近在静态库合并上也踩坑了,真是头疼

    存在的问题

    合并库有两种方式:libtoolar,但是libtool一直合并失败

    所以这里使用ar来合并

    通常做法就是ar -xar -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脚本进行合并操作

    1. 创建mri脚本

      create libnew.a
      addlib libx.a
      addlib liby.a
      save
      end
      

      保存为combine.mri

    2. 执行脚本

      android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -M <libaz.mri
      

    这样就能够正常调用了

    ar合并静态库

    如果有什么问题或建议,欢迎留言~

    相关文章

      网友评论

          本文标题:Android静态库合并问题及解决办法

          本文链接:https://www.haomeiwen.com/subject/cqkifltx.html