我想将一个开源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"
}
我希望这对某人有所帮助.我只需要做一些小的更改来编译应用程序。