【问题标题】:How to avoid mips64el using CMake when cross compiling for Android交叉编译Android时如何避免使用CMake的mips64el
【发布时间】:2016-01-14 11:35:29
【问题描述】:

我正在尝试编译一个 C++ 库以将其与 Android 应用程序一起使用。我正在使用 CMake 生成 makefile,但是当我配置 CMake 脚本时,配置将“mips64el”作为编译参考(CMAKE_AR、CMAKE_ASM_COMPILER、CMAKE_C_COMPILER 等)。此编译器与makefile中生成的标志不兼容,因此构建过程失败。

最奇怪的是,在第二台PC上,同样的配置定义了“arm-linux”作为编译参考。

作为补充说明,我在两台电脑上都使用 Ubuntu 14.04。我将“armeabi-v7a”定义为 Android ABI,并将 Android API 级别定义为 9。此外,我在环境变量(作为 ANDROID_NDK 和 PATH 变量)中包含了 NDK 库 (android-ndk-r10c) 的路径.

有什么建议吗?

【问题讨论】:

  • 可以设置arch和CMAKE_x_COMPILER_TARGET。
  • 我尝试定义CMAKE_CXX_COMPILER_TARGET = arm-linux-androideabi,类似于“cmake.org/cmake/help/v3.0/manual/cmake-toolchains.7.html”中的解释,但没有任何改变。
  • 你的电脑里有什么 ndk 可以工作?我建议您下载最后一个以避免这种配置,有时 64 位会失败。我将使用: android-ndk-r10e-linux-x86_64.bin 。 API 9 太旧了,如果该 NDK 修订失败,请尝试使用 API 14。
  • 我已经用那个确切的版本进行了测试,我也尝试了 api 21。我昨天才下载了“android-ndk-r10e-linux-x86_64.bin”。

标签: android android-ndk cmake


【解决方案1】:

错误出在工具链本身中。看起来第一台计算机中的库在配置步骤中被忽略了,因为那些库版本没有在工具链中列出,所以唯一可用的配置是 mips64el。

我已经从this github 仓库更新了工具链文件,现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多