我试图为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'
我知道,它与 multilib
有关 multilib
但我在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'
编辑2:我删除了绝对的所有相对路径 . 并将编译器从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 / Desktop / clang-compilation / osxbuild / bin / clang-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,则不能使用辅助
1 回答
为android构建clang的最简单方法是:
下载AOSP as described here
来自AOSP root的
setup构建命令(
source build/envsetup.sh
)cd到platform / external / llvm(see more info here)
运行
mm
命令来构建cd到
AOSP root/platform/ndk
run
build/tools/build-llvm.py
(see here)finally包将在
AOSP/out
文件夹中