我想将一个开源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.
除了可能我针对的是错误的体系结构之外,我不确定该怎么想,而谷歌搜索似乎返回的效果不是很好。
让我知道您是否需要该项目的链接。
答案 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"
}
我希望这对某人有帮助。我只需要做些小改动就可以编译应用程序。