【问题标题】:Compiling Libs for Android NDK为 Android NDK 编译库
【发布时间】:2020-04-23 17:34:40
【问题描述】:

这里是安卓菜鸟。我正在尝试创建一个可以运行本机代码的基于 OpenGL ES 的 Android 应用程序,并且我正在使用 CMake 来构建它。

现在我有一个 C++ 库,我需要针对 Android NDK 代码包含、导入和链接(.a 文件)。我知道该库需要针对 Android 进行交叉编译,但如果我只构建 Linux 二进制文件(.a 文件)并将其链接到它,它会起作用吗?

此外,C++ 库是使用 Windows 平台和 CMake 构建的,它会生成一个 .lib(Windows 的静态库版本)。从 Windows 平台生成 .a 文件的最佳方法是什么(Windows 的 Linux 的静态库版本)?

【问题讨论】:

    标签: c++ android-ndk cross-compiling .a .lib


    【解决方案1】:

    现在我有一个 C++ 库,我需要针对 Android NDK 代码包含、导入和链接(.a 文件)。我知道该库需要针对 Android 进行交叉编译,但如果我只构建 Linux 二进制文件(.a 文件)并将其链接到它,它会起作用吗?

    不会的。这是因为它们只是属于不同的平台。它们都使用相同的格式(.a),但这并不意味着它们是兼容的。例如,它们使用不同的标准库。所以你必须为 Android 交叉编译它。

    此外,C++ 库是使用 Windows 平台和 CMake 构建的,它会生成一个 .lib(Windows 的静态库版本)。从 Windows 平台生成 .a 文件的最佳方法是什么(Windows 的 Linux 的静态库版本)?

    由于您的 C++ 库使用 CMake 并且 Android NDK 正式支持 CMake 构建,这不会那么难。

    对于 Windows,您可以 download Android NDK。然后尝试CMake guide。基本上你应该做的是将工具链文件作为 CMake 参数传递(加上一些参数,如 ABI、API 级别......)。所以你可能不需要编辑你的 CMake 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 2013-06-11
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多