【问题标题】:build llvm clang4.0 for android armeabi为 android armeabi 构建 llvm clang4.0
【发布时间】:2016-10-19 05:13:08
【问题描述】:

我正在尝试为 android armeabi 构建 llvm 和 clang4.0。

目前我做了这些: 1.来自: http://hardenedlinux.org/toolchains/2016/04/01/How_to_build_Clang_toolchains_for_Android.html 我有结帐源代码:

repo init -u https://android.googlesource.com/platform/manifest -b llvm  
repo sync
python external/clang/build.py

构建成功,但将消耗超过 100G 的磁盘空间和大约 8 小时。更何况它不是clang 4.0。

2。 来自http://llvm.org/docs/GettingStarted.html 我查看了源代码:

git clone http://llvm.org/git/llvm.git
cd llvm/tools
git clone http://llvm.org/git/clang.git
cd llvm/projects
git clone http://llvm.org/git/compiler-rt.git

最后我用 llvm/cmake/platforms/android.cmake 构建它 这个 android.cmake 可以显示如下:

# Toolchain config for Android NDK.
# This is expected to be used with a standalone Android toolchain (see
# docs/STANDALONE-TOOLCHAIN.html in the NDK on how to get one).
#
# Usage:
# mkdir build; cd build
# cmake ..; make
# mkdir android; cd android
# cmake -DLLVM_ANDROID_TOOLCHAIN_DIR=/path/to/android/ndk \
#   -DCMAKE_TOOLCHAIN_FILE=../../cmake/platforms/Android.cmake ../..
# make <target>

SET(CMAKE_SYSTEM_NAME Linux)

IF(NOT CMAKE_C_COMPILER)
 SET(CMAKE_C_COMPILER ${CMAKE_BINARY_DIR}/../bin/clang)
ENDIF()

IF(NOT CMAKE_CXX_COMPILER)
 SET(CMAKE_CXX_COMPILER ${CMAKE_BINARY_DIR}/../bin/clang++)
ENDIF()

SET(ANDROID "1" CACHE STRING "ANDROID" FORCE)

SET(ANDROID_COMMON_FLAGS "-target arm-linux-androideabi --   sysroot=${LLVM_ANDROID_TOOLCHAIN_DIR}/sysroot -B${LLVM_ANDROID_TOOLCHAIN_DIR}")
SET(CMAKE_C_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_cflags"    FORCE)
SET(CMAKE_CXX_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE)
SET(CMAKE_EXE_LINKER_FLAGS "-pie" CACHE STRING "toolchain_exelinkflags" FORCE)

但它总是构建 x86 目标,它不构建 armeabi 目标。

我的构建主机操作系统是 Ubuntu 16.04 LTS 64 位。

请问我如何为 armeabi 目标 Android 构建 llvm 和 clang 4.0?

【问题讨论】:

    标签: android llvm llvm-clang


    【解决方案1】:

    我相信您对针对 android 的交叉编译器感兴趣。在这种情况下 llvm/cmake/platforms/android.cmake 没有用(它用于通过编译器构建,而不是构建编译器本身)。

    有关通用 LLVM 构建说明,请参阅 http://llvm.org/docs/CMake.html。但在您的情况下,我相信您需要在 LLVM 的 cmake 调用中将 LLVM_TARGETS_TO_BUILD 设置为“ARM;AArch64”,将 LLVM_DEFAULT_TARGET_TRIPLE 设置为“arm-linux-androideabi”。

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      相关资源
      最近更新 更多