Android-arm的交叉编译

Android-arm的交叉编译,android,android-ndk,clang,cross-compiling,llvm-clang,Android,Android Ndk,Clang,Cross Compiling,Llvm Clang,我正在尝试为Android arm交叉编译llvm/clang 我将CC/CXX变量导出到arm linux AndroidABI交叉编译器,然后从构建文件夹执行: cmake -G "Unix Makefiles" --target arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ ../llvm 生成文件夹与llvm源代码位于同一目录中 我得到一个错误: rm-linux-androideabi-g++

我正在尝试为Android arm交叉编译llvm/clang

我将CC/CXX变量导出到arm linux AndroidABI交叉编译器,然后从构建文件夹执行:

cmake -G "Unix Makefiles" --target arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ ../llvm 
生成文件夹与llvm源代码位于同一目录中

我得到一个错误:

rm-linux-androideabi-g++: error: unrecognized command line option '-m32'
我知道,它与g++
multilib
for
armlinux
有关,但我在NDK中找不到它

我也尝试了所有列出的步骤,向导发现,没有运气

任何帮助都将不胜感激。谢谢

编辑: 现在我使用以下命令:

cmake-G“Unix Makefiles”--前缀=../outarm--target arm-linux-androideabi--sysroot=$NDK/platforms/android-21/arch-arm/ -DCMAKE\u BUILD\u TYPE=Release-DLLVM\u ENABLE\u PIC=False-DCMAKE\u CROSSCOMPILING=True-DLLVM\u TABLEGEN=../osxbuild/bin/llvm tblgen-DCLANG\u TABLEGEN=../osxbuild/bin/clang tblgen-DLLVM\u TARGET\u ARCH=ARM-DLLVM\u TARGETS\u TO\u BUILD=ARM../llvm

编译现在开始,但在14%时停止,出现以下错误:

rm-linux-androideabi-g++: error: unrecognized command line option '-m32'
arm-linux-AndroidABI-g++:错误:无法识别的命令行选项 “-捆绑”

编辑2: 我删除了所有相对路径到绝对路径。 并将编译器从gcc更改为clang。Clang识别
-bundle
,但不使用它。现在出现错误的完整命令是: 命令:

cmake-G“Unix生成文件” -DCMAKE\u INSTALL\u PREFIX=$HOME/Desktop/clang compilation/outarm-DCMAKE\u BUILD\u TYPE=Release-DLLVM\u DEFAULT\u TARGET\u TRIPLE=arm-linux-androideabi--sysroot=$NDK/platforms/android-21/arch arm/-DLLVM\u ENABLE\u PIC=False-DLLVM\u TARGETS\u arch=arm-DLLVM\u-TO\u BUILD=arm-DLLVM\u TABLEGEN=$HOME/Desktop/clang compilg compilation/osxbuild/bin/llvm tblgen -DCLANG_TABLEGEN=$HOME/Desktop/clangcompilation/osxbuild/bin/clangtblgen -DCMAKE_CXX_FLAGS='-I$HOME/android/toolschains/gcc/include/c++/4.9/arm-linux-androideabi-I$HOME/android/toolschains/gcc/include/'$HOME/Desktop/clang compilation/llvm

make-j12

错误消息: clang36++:警告:编译期间未使用参数:'-bundle'
/Users/paschalis/android/toolschains/gcc/bin//lib/gcc/arm-linux-androideabi/4.8/../../../../../../../arm-linux-androideabi/bin/ld:致命错误:-f/--auxiliary在没有-shared的情况下不能使用

  • 下载AOSP
  • 从AOSP根目录(
    sourcebuild/envsetup.sh
    )设置生成命令
  • cd到平台/外部/llvm()
  • 运行
    mm
    命令以生成
  • cd至
    AOSP根目录/平台/ndk
  • 运行
    build/tools/build llvm.py
    ()
  • 最后,包将位于
    AOSP/out
    文件夹中

谢谢你的建议!这些问题主要是由于Android上的一些库缺失或被剥离造成的。我
envsetup
然后运行
make clang
@Paschalis你成功了吗。aosp生成失败。不过还是要谢谢你!不过,我没有投入太多精力,因为我专注于
termux包
。我在过去已经构建了aosp的一部分,只是还没有任何外部项目(成功地)完成@Paschalis在AOSPS中完全使用
mm
命令而不是
make
,因为我已经成功地编译了它,所以我不再尝试使用aosp源代码再次编译它。但是如果你确信
mm
有效,我会相信你的话并接受这个答案!在与交叉编译标志和依赖项进行了几天的斗争之后,我终于找到了一个可以工作的编译器。我稍微修改了这个,并构建了clang、gcc和它们的所有依赖项!你能指出构建clang的脚本/补丁吗?