在Linux上編譯LLVM/Clang 8.0.0等全部原始碼
本教程使用的作業系統是Ubuntu Linux 18.04.2 LTS版本,要編譯的LLVM原始碼是8.0.0。
1、安裝必要的軟體。它們是:build-essential/cmake/swig/python-swigpk/libxml2/libxml2-dev/libncurse5/libncurse-dev/libedit-dev/libpython-dev,還可以選擇安裝doxygen/ocaml/python-sphinx/git/libomp-7-dev/libelf-dev/libffi-dev/python-pycuda/python-z3。
開啟終端,輸入以下命令:
sudo apt-get install build-essential cmake swig python-swiglpk libxml2 libxml2-dev libncurses5 libncurses5-dev libedit-dev libpython-dev
2、下載LLVM/Clang等全部原始碼。(下載地址)
3、解壓LLVM/Clang等全部原始碼(不包括test-suite)。
首先解壓llvm主程式原始碼:
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
4、編譯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等所有已編譯好的軟體。安裝目錄