我正在尝试为android armeabi构建llvm和clang4.0。
目前我已经完成了这些: 来自: 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小时。更重要的是,它不是铿锵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?
答案 0 :(得分:0)
我相信你对交叉编译器定位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”。