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

Cross Compiling SDL C++ application to Android

本文关键字:Android 交叉编译 应用程序 SDL C++      更新时间:2023-10-16

我想将一个开源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.

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

如果您需要该项目的链接,请告诉我。

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

要下载编译器,请执行以下操作:https://developer.android.com/ndk/downloads/older_releases

在您的本地属性中添加行

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

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

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

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

我希望这对某人有所帮助.我只需要做一些小的更改来编译应用程序。