Android arm的交叉编译铿锵声

时间:2015-07-30 00:37:13

标签: android android-ndk clang cross-compiling llvm-clang

我正在尝试为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,则不能使用辅助

1 个答案:

答案 0 :(得分:2)

为android构建clang的最简单方法是:

  • 下载AOSP as described here
  • 从AOSP根目录(source build/envsetup.sh
  • 设置构建命令
  • cd to platform / external / llvm(see more info here
  • 运行mm命令构建
  • cd to AOSP root/platform/ndk
  • 运行build/tools/build-llvm.pysee here
  • 最后包将在AOSP/out文件夹