我正在尝试为Android arm交叉编译llvm / clang。
我将CC / CXX变量导出到arm-linux-androideabi交叉编译器,然后从我的build文件夹中执行:
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'
我知道,它与multilib
的g ++ 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 = Release -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 ++:错误:无法识别的命令行选项 '-bundle'
EDIT2:
我删除了绝对的所有相对路径。
并将编译器从gcc更改为clang。 Clang识别-bundle
,但它没有使用它。现在错误的完整命令是:
命令:
cmake -G“Unix Makefiles” -DCMAKE_INSTALL_PREFIX = $ HOME / Desktop / clang-compilation / outarm -DCMAKE_BUILD_TYPE = Release -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 /桌面/铛编译/ osxbuild /斌/铛,tblgen -DCMAKE_CXX_FLAGS =' - 我$ HOME / android / toolchains / gcc / include / c ++ / 4.9 / arm-linux-androideabi -I $ HOME / android / toolchains / gcc / include /'$ HOME / Desktop / clang-compilation / llvm
make -j12
错误讯息: clang36 ++:警告:编译期间未使用的参数:' - bundle' /Users/paschalis/android/toolchains/gcc/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:致命错误:-f / - 如果没有-shared,则不能使用辅助
答案 0 :(得分:2)
为android构建clang的最简单方法是:
source build/envsetup.sh
)mm
命令构建AOSP root/platform/ndk
build/tools/build-llvm.py
(see here)AOSP/out
文件夹