【发布时间】:2015-10-21 04:49:12
【问题描述】:
我正在尝试为 Android arm 交叉编译 llvm/clang。
我将 CC/CXX 变量导出到 arm-linux-androideabi 交叉编译器,然后从我的构建文件夹中执行:
cmake -G "Unix Makefiles" --target arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ ../llvm
build 文件夹与 llvm 源代码在同一目录下。
我得到错误:
rm-linux-androideabi-g++: error: unrecognized command line option '-m32'
我知道,它与 g++ multilib for arm-linux 有关,但我在 NDK 中找不到。
我也尝试了here 列出的所有步骤,并且指南找到了here,但没有运气。
任何帮助将不胜感激。谢谢!
编辑: 现在我正在使用以下命令:
cmake -G "Unix Makefiles" --prefix=../outarm --target arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ -DCMAKE_BUILD_TYPE=发布 -DLLVM_ENABLE_PIC=False -DCMAKE_CROSSCOMPILING=True -DLLVM_TABLEGEN=../osxbuild/bin/llvm-tblgen -DCLANG_TABLEGEN=../osxbuild/bin/clang-tblgen -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM ../llvm
现在开始编译,但在 14% 处停止并出现错误:
arm-linux-androideabi-g++:错误:无法识别的命令行选项 '-捆绑'
编辑2:
我删除了所有到绝对路径的相对路径。
并将编译器从 gcc 更改为 clang。 Clang 识别-bundle,但它不使用它。现在带有错误的完整命令是:
命令:
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$HOME/Desktop/clang-compilation/outarm -DCMAKE_BUILD_TYPE=发布 -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ -DLLVM_ENABLE_PIC=False -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM -DLLVM_TABLEGEN=$HOME/Desktop/clang-compilation/osxbuild/bin/llvm-tblgen -DCLANG_TABLEGEN=$HOME/Desktop/clang-compilation/osxbuild/bin/clang-tblgen -DCMAKE_CXX_FLAGS='-I$HOME/android/toolchains/gcc/include/c++/4.9/arm-linux-androideabi -I$HOME/android/toolchains/gcc/include/'$HOME/Desktop/clang-compilation/llvm
制作-j12
错误信息: clang36++:警告:编译期间未使用的参数:'-bundle' /Users/paschalis/android/toolchains/gcc/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:致命错误:-f/--auxiliary 不能在没有 -shared 的情况下使用
【问题讨论】:
-
经过几天与交叉编译标志和依赖项的斗争,我设法获得了一个工作编译器。我稍微修改了这个 work,并构建了 clang、gcc 以及它们的所有依赖项!
-
你能指点脚本/补丁来构建clang吗?
标签: android android-ndk clang cross-compiling llvm-clang