由於是筆記,因此沒有開頭( ̄▽ ̄)~*html
我以前安裝了本人打的 LLVM-5.0.1 的 RPM 包,此次也以這個包起底。LLVM 依賴(不是那麼新的) C++14 特性,Centos 自帶的 gcc 套件是 4.8.5 版本,編譯 libcxx 會失敗。python
http://releases.llvm.org/down...
除 LLVM Test Suite
都下載,放在一塊兒。c++
https://cmake.org/files/v3.11...
LLVM 編譯依賴 CMake 3.4.3 以上,Centos 自帶 2.8.12.2 不能用。bash
cmake-3.11.0-Linux-x86_64.sh
添加執行權限後運行,一路 D,Y 接受許可協議,Y 安裝到當前目錄的 cmake-3.11.0-Linux-x86_64
子目錄下。併發
$ yum install python-devel libffi-devel graphviz-devel elfutils-libelf-devel readline-devel libedit-devel libxml2-devel protobuf-devel gtext-devel doxygen swig
LLVM 的各個子組件必須放在 LLVM 源碼的固定位置,使用固定名稱。python2.7
首先解壓 llvm-6.0.0.src.tar.xz
,生成目錄 llvm-6.0.0.src
解壓 tar.xz 文件使用 tar Jxvf filename.tar.xz
ui
llvm-6.0.0.src/tools
目錄下的組件:cfe-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/tools/clang
lld-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/tools/lld
polly-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/tools/polly
lldb-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/tools/lldb
llvm-6.0.0.src/projects
目錄下的組件:openmp-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/projects/openmp
libcxx-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/projects/libcxx
libcxxabi-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/projects/libcxxabi
libunwind-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/projects/libunwind
compiler-rt-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/projects/compiler-rt
clang-tools-extra-6.0.0.src.tar.xz
,重命名爲 llvm-6.0.0.src/tools/clang/tools/extra
首先指定編譯器爲 clang 5.0.1
:code
$ export LD_LIBRARY_PATH=/usr/local/lib:/opt/gcc6-dist/lib64:/opt/llvm-5.0.1/lib64 $ export CC=/opt/llvm-5.0.1/bin/clang $ export CXX=/opt/llvm-5.0.1/bin/clang++ $ export CXXFLAGS=-stdlib=libc++ $ export LDFLAGS='-lc++ -lc++abi'
假設全部組件都放在當前用戶的主目錄下xml
$ cd ~/llvm-6.0.0.src $ mkdir build && cd build $ ~/cmake-3.11.0-Linux-x86_64/bin/cmake .. -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_INCLUDE_DOCS=OFF -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_EH=ON -DLLVM_INSTALL_UTILS=ON -DWITH_POLLY=ON -DLINK_POLLY_INTO_TOOLS=ON -DLLVM_TARGETS_TO_BUILD=X86 -DLIBOMP_ARCH=x86_64 -DBUILD_SHARED_LIBS=ON -DLIBOMP_ENABLE_SHARED=ON -DLLVM_ENABLE_LIBCXX=ON -DLLDB_RELOCATABLE_PYTHON=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_BUILD_TYPE=Release -DCLANG_DEFAULT_CXX_STDLIB=libc++ -DCLANG_INCLUDE_TESTS=OFF -DENABLE_LINKER_BUILD_ID=ON -DENABLE_X86_RELAX_RELOCATIONS=ON -DLIBCXXABI_INCLUDE_TESTS=OFF -DLIBCXX_INCLUDE_BENCHMARKS=OFF -DLIBCXX_INCLUDE_TESTS=OFF -DLIBOMP_TSAN_SUPPORT=ON -DLLDB_BUILD_INTEL_PT=OFF -DLLDB_INCLUDE_TESTS=OFF -DLLVM_ENABLE_OCAMLDOC=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON -DLLVM_TOOL_LLGO_BUILD=ON -DLLVM_TOOL_PARALLEL_LIBS_BUILD=ON -DLLVM_ENABLE_PIC=ON -DLIBUNWIND_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_PEDANTIC=ON -DLIBCXXABI_LIBDIR_SUFFIX=64 -DLIBCXX_LIBDIR_SUFFIX=64 -DLIBUNWIND_LIBDIR_SUFFIX=64 -DLLVM_LIBDIR_SUFFIX=64
$ nohup make -j4 & # -j4 表示併發執行 4 個任務,這個數字指定 CPU 核心數爲佳
編譯時間很長,一般在一個小時以上htm
$ make install
默認會安裝到 /usr/local
下,能夠用 DESTDIR=xxx
自定義安裝目錄
如出現以下報錯:
CMake Error at tools/lldb/scripts/cmake_install.cmake:41 (file): file INSTALL cannot find "path/llvm-6.0.0.src/build/lib/python2.7"
執行
$ cp -r lib64/python2.7 lib/python2.7