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

猜你喜欢

转载自blog.csdn.net/force_eagle/article/details/77867425