本教程使用的操做系統是Ubuntu Linux 18.04.2 LTS版本,編譯器是GCC 6.5.0(不用新版的緣由是某些代碼不支持更高的版本),要編譯的LLVM源代碼是8.0.0。html
一、安裝必要的軟件。它們是:build-essential/gcc-6/g++-6/cmake/swig/python-swigpk/libxml2/libxml2-dev/libncurse5/libncurse-dev/libedit-dev/libpython-dev,還能夠選擇安裝doxygen/ocaml/python-sphinx/git/libopenmpi-dev/libelf-dev/libffi-dev/python-pycuda。
打開終端,輸入如下命令:
sudo apt-get install build-essential gcc-6 g++-6 cmake swig python-swiglpk libxml2 libxml2-dev libncurses5 libncurses5-dev libedit-dev libpython-devpython
另外還要安裝z3,安裝方法看這裏。git
切換gcc/g++版本的方法看這裏。性能
二、下載LLVM/Clang等所有源代碼。(下載地址)ui
三、解壓LLVM/Clang等所有源代碼(不包括test-suite)。
首先解壓llvm主程序源代碼:es5
tar xf llvm-8.0.0.src.tar.xz
而後進入llvm主目錄:
cd llvm-8.0.0.src
建立幾個子目錄用於存放LLVM子項目的源代碼:
mkdir -p tools/clang
mkdir -p tools/clang/tools/extra
mkdir -p tools/lld
mkdir -p tools/lldb
mkdir -p tools/polly
mkdir -p projects/compiler-rt
mkdir -p projects/libcxx
mkdir -p projects/libcxxabi
mkdir -p projects/libunwind
mkdir -p projects/openmp
開始解壓全部的子項目:
tar xf ../cfe-8.0.0.src.tar.xz -C tools/clang --strip-components=1
tar xf ../clang-tools-extra-8.0.0.src.tar.xz -C tools/clang/tools/extra --strip-components=1
tar xf ../lld-8.0.0.src.tar.xz -C tools/lld --strip-components=1
tar xf ../lldb-8.0.0.src.tar.xz -C tools/lldb --strip-components=1
tar xf ../polly-8.0.0.src.tar.xz -C tools/polly --strip-components=1
tar xf ../compiler-rt-8.0.0.src.tar.xz -C projects/compiler-rt --strip-components=1
tar xf ../libcxx-8.0.0.src.tar.xz -C projects/libcxx --strip-components=1
tar xf ../libcxxabi-8.0.0.src.tar.xz -C projects/libcxxabi --strip-components=1
tar xf ../libunwind-8.0.0.src.tar.xz -C projects/libunwind --strip-components=1
tar xf ../openmp-8.0.0.src.tar.xz -C projects/openmp --strip-components=1操作系統
四、編譯LLVM/Clang等所有源代碼。
切換到終端,執行如下命令:
cd ..
mkdir build
cd build
sudo mkdir /xxx
sudo cmake -DCMAKE_INSTALL_PREFIX=/xxx ../llvm-8.0.0.src(這裏的xxx是你想要安裝LLVM的目錄,名字能夠隨便取,若是不加-DCMAKE_INSTALL_PREFIX參數的話默認應該是安裝到/usr裏)
sudo cmake --build .(開始編譯。編譯過程很長,須要幾個小時,具體時間和CPU性能有關)
sudo cmake --build . --target install(安裝LLVM/Clang等全部已編譯好的軟件。安裝目錄在上面指定了).net