【问题标题】:Create .a file instead .so using android studio?使用android studio创建.a文件而不是.so?
【发布时间】:2019-10-24 13:25:01
【问题描述】:

如何使用android studio从c源创建.a文件而不是.so

如果可能的话,那么我也想知道如何加载它们以及使用 .a 文件而不是 .so 的利弊

【问题讨论】:

  • 你为什么要这样做?
  • 我读到 c 源代码也可以在 .a 文件中编译并阅读更多内容,两者在其他系统上的工作方式有何不同,但没有找到任何适用于 android 系统的资源。目前正在试验.

标签: android c++ c android-studio


【解决方案1】:

Android 依赖于 Java 的 System.loadLibrary() 来加载本机代码。此调用使用dl* family of functions 加载动态库(通常与扩展名.so 相关联)。 动态库可以指定其他库作为其依赖,依次加载。 打开该库后,JVM 会探测它以查找具有特制名称的函数,这些函数绑定到相应的 Java 方法。

相比之下,.a 文件是一个静态库。它只是一个目标文件 (.o) 的存档,用于在编译时通过 静态 链接使用。

回答您的问题:是的,您可以更改您的 CMakeLists.txt 以创建静态库,但最终您必须将它们链接到一个动态的 .so 中才能在 Android 中加载它.例如,参见this answer 的底部部分,其中许多预构建的静态库与单个 .cpp 文件链接在一起以生成动态库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多