首页 文章

Android arm的交叉编译铿锵声

提问于
浏览
0

我试图为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 回答

  • 2

    为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.pysee here

    • finally包将在 AOSP/out 文件夹中

相关问题