本教程使用的操做系统是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