Compile LLVM+CLANG 4.0.1 for RHEL6

Compile LLVM+CLANG 4.0.1 for RHEL6

llvm + clang 系統要求:

Package version
GNU Make 3.79,3.71
GCC
= 4.8.0
python
= 2.7
zlib
= 1.2.3

下載

http://releases.llvm.org/download.html#4.0.1

export CLANG_PKG=/mnt/clang
cd /mnt/clang
wget http://releases.llvm.org/4.0.1/llvm-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/cfe-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/compiler-rt-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/libcxx-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/libcxxabi-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/libunwind-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/lld-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/lldb-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/polly-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/clang-tools-extra-4.0.1.src.tar.xz
wget http://releases.llvm.org/4.0.1/test-suite-4.0.1.src.tar.xz

解壓

tar -Jxf ${CLANG_PKG}/llvm-4.0.1.src.tar.xz 
mv llvm-4.0.1.src llvm_RELEASE_401
export CLANG_SRC=`pwd`/llvm_RELEASE_401
cd ${CLANG_SRC}/tools
tar -Jxf ${CLANG_PKG}/cfe-4.0.1.src.tar.xz 
mv cfe-4.0.1.src clang
tar -Jxf ${CLANG_PKG}/polly-4.0.1.src.tar.xz 
mv polly-4.0.1.src polly
tar -Jxf ${CLANG_PKG}/lldb-4.0.1.src.tar.xz 
mv lldb-4.0.1.src lldb
tar -Jxf ${CLANG_PKG}/lld-4.0.1.src.tar.xz 
mv lld-4.0.1.src lld
tar -Jxf ${CLANG_PKG}/clang-tools-extra-4.0.1.src.tar.xz 
cd ${CLANG_SRC}/tools/clang/tools
mv clang-tools-extra-4.0.1.src extra
cd ${CLANG_SRC}/projects
tar -Jxvf ${CLANG_PKG}/compiler-rt-4.0.1.src.tar.xz
mv compiler-rt-4.0.1.src compiler-rt
tar -Jxvf ${CLANG_PKG}/libcxx-4.0.1.src.tar.xz
mv libcxx-4.0.1.src libcxx
tar -Jxvf ${CLANG_PKG}/libcxxabi-4.0.1.src.tar.xz
mv libcxxabi-4.0.1.src libcxxabi
tar -Jxvf ${CLANG_PKG}/libunwind-4.0.1.src.tar.xz
mv libunwind-4.0.1.src libunwind

也可通過svn checkout 所有代碼,具體參考GettingStarted.

配置

配置 描敘
CMAKE_C_COMPILER gcc路徑
CMAKE_CXX_COMPILER g++路徑
CMAKE_INSTALL_PREFIX 指定install路徑
CMAKE_BUILD_TYPE build 類型(Debug, Release, RelWithDebInfo, and MinSizeRel. Default is Debug.)
LLVM_TARGETS_TO_BUILD build 目標平臺 (AArch64, AMDGPU, ARM, BPF, Hexagon, Mips, MSP430, NVPTX, PowerPC, Sparc, SystemZ, X86, XCore.)
LLVM_OPTIMIZED_TABLEGEN Builds a release tablegen that gets used during the LLVM build. This can dramatically speed up debug builds.
LLVM_BUILD_LLVM_DYLIB Generate libLLVM.so. This library contains a default set of LLVM components that can be overridden with LLVM_DYLIB_COMPONENTS. The default contains most of LLVM and is defined in tools/llvm-shlib/CMakelists.txt.
CMAKE_CXX_FLAGS c++ 編譯參數
CMAKE_EXE_LINKER_FLAGS linker 參數
CLANG_DEFAULT_CXX_STDLIB 指定clang默認使用的C++ stdlib("libstdc++" or "libc++" or 空使用當前默認配置)
CLANG_DEFAULT_LINKER 指定clang 默認使用的 linker(linker name or absolute path.)
CLANG_DEFAULT_RTLIB 指定clang 默認使用的 runtime 庫("libgcc" or "compiler-rt" or 空使用當前默認配置)
LLVM_ENABLE_LIBCXX 啓用libc++編譯llvm & clang;
LLVM_ENABLE_LLD 啓用lld作爲 C and C++ linker ;
PYTHON_EXECUTABLE 指定使用python path ;

注意:
如果當前python版本爲3,可通過-DPYTHON_EXECUTABLE=python2-path指定使用python2路徑;

 cmake -G "Unix Makefiles" \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/opt/llvm_RELEASE_401-linux-x86_64-RHEL6 \
    -DLLVM_TARGETS_TO_BUILD=X86 \
    ../llvm_RELEASE_401 

: libcxx-4.0.1 & libcxxabi-4.0.1 系統g++版本不能低於 4.9, 低於4.9版本g++編譯報錯。

安裝

make install/strip

其他

Using LLD

  1. 修改系統ld鏈接到ld.lld;
  2. clang添加-fuse-ld=lld LDFLAGS;
  3. 修改llvm編譯配置,修改CLANG_DEFAULT_LINKER=ld.lld, 重新 make install/strip;

clang Expressive Diagnostics

clang -fsyntax-only format-strings.c
  format-strings.c:91:13: warning: '.*' specified field precision is missing a matching 'int' argument
    printf("%.*d");

參考

GettingStarted
Building and Running Clang
PollyGetStarted
BuildingLldbOnLinux
BuildingLibcxx
LLD - The LLVM Linker
How To Install LLVM and Clang on CentOS 6
How To Install GCC on CentOS 6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章