CentOS 7.x에서 소스 빌드로 Clang 6.0(LLVM)을 설치하는 방법

다운로드 및 압축 해제

wget http://releases.llvm.org/6.0.0/llvm-6.0.0.src.tar.xz
wget http://releases.llvm.org/6.0.0/cfe-6.0.0.src.tar.xz
wget http://releases.llvm.org/6.0.0/libcxx-6.0.0.src.tar.xz
wget http://releases.llvm.org/6.0.0/libcxxabi-6.0.0.src.tar.xz
 
unxz llvm-6.0.0.src.tar.xz
unxz cfe-6.0.0.src.tar.xz
unxz libcxx-6.0.0.src.tar.xz
unxz libcxxabi-6.0.0.src.tar.xz
 
tar -xvf llvm-6.0.0.src.tar
tar -xvf cfe-6.0.0.src.tar
tar -xvf libcxx-6.0.0.src.tar
tar -xvf libcxxabi-6.0.0.src.tar

아래에서 이 이름을 기준으로 빌드 방법을 설명하므로 디렉토리 이름을 변경하는 게 좋습니다.

mv llvm-6.0.0.src llvm
mv cfe-6.0.0.src clang
mv libcxx-6.0.0.src libcxx
mv libcxxabi-6.0.0.src libcxxabi

llvm 빌드

mv clang ./llvm/tools
mkdir llvm.build
cd llvm.build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm
make
sudo make install
cd ..

libcxx, libcxxabi 빌드

1단계 — libcxxabi 없이 libcxx 빌드

cd libcxx
mkdir tmp
cd tmp
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
make
sudo make install
cd ..
rm tmp -rf
cd ..

2단계 — libc++로 libcxxabi 빌드

cd libcxxabi
mkdir tmp
cd tmp
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include ..
make
sudo make install
cd ../..

3단계 — libcxxabi와 함께 libcxx 다시 빌드

이번에는 libcxxabi와 함께 컴파일하므로 LIBCXX_CXX_ABI=libcxxabi와 libcxxabi 헤더 경로 LIBCXX_CXX_ABI_INCLUDE_PATHS를 지정합니다.

cd libcxx
mkdir tmp
cd tmp
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_INCLUDE_PATHS=../../libcxxabi/include ..
make
sudo make install
cd ../..

Tag: linux centos clang llvm libcxx 빌드