将SDL C ++应用程序交叉编译到Android

时间:2019-01-01 21:31:55

标签: android c++ c compilation cross-compiling

我想将一个开源C ++项目编译为Android。该项目在Linux上运行,但需要编译为32位。

这是编译过程的输出 https://pastebin.com/9CkVVD9i

这是我正在使用的CMAKE文件。 https://pastebin.com/eMDntghP

问题是,当我进行编译时,会看到大量此类错误。

  /home/qndel/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/7.0.2/include/mmintrin.h:324:19: error: use of undeclared identifier '__builtin_ia32_punpcklwd'
      return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
                    ^
  /home/qndel/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/7.0.2/include/mmintrin.h:345:19: error: use of undeclared identifier '__builtin_ia32_punpckldq'
      return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
                    ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.
  ninja: build stopped: subcommand failed.

除了可能我针对的是错误的体系结构之外,我不确定该怎么想,而谷歌搜索似乎返回的效果不是很好。

让我知道您是否需要该项目的链接。

1 个答案:

答案 0 :(得分:0)

最终,我将编译器切换到g ++ 4.4.9,从存储库中删除了#include。

要下载编译器: https://developer.android.com/ndk/downloads/older_releases

在您的local.properties中添加行

ndk.dir=/path/to/your/ndk-bundle

最有效的方法是在您的应用程序build.gradle中安装

您可以指定GCC编译器(不再受支持,但我的项目需要它)

externalNativeBuild {
            cmake {
                arguments '-DBUILD_TESTING=OFF', '-DANDROID_TOOLCHAIN=gcc'
                cppFlags "-w -std=c++14"
            }

我希望这对某人有帮助。我只需要做些小改动就可以编译应用程序。