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
- 修改系統
ld
鏈接到ld.lld
; clang
添加-fuse-ld=lld
LDFLAGS;- 修改
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