2016-10-19 1 views
1

アンドロイドarmeabi用のllvmとclang4.0をビルドしようとしています。build llvm clang4.0 for android armeabi

は現在、私はこれらを行っている: 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ではありません。

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 

最終的に私はこのandroid.cmakeは、以下に示すことができLLVM/cmakeの/プラットフォームとそれを構築/ android.cmake :

私はソースコードをチェックアウトし http://llvm.org/docs/GettingStarted.html から

2.

# 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ターゲットを構築しません。

私のビルドホストOSは、Ubuntu 16.04 LTS 64ビットです。

どうすればいいのですか?armeabiとAndroidをターゲットにしてllvmとclang 4.0をビルドするにはどうすればいいですか?

答えて

0

あなたはクロスコンパイラとアンドロイドをターゲットにしていると思います。この場合、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"に設定する必要があると思います。

関連する問題