本教程使用的操作系统是Ubuntu Linux 18.04.2 LTS版本,编译器是GCC 6.5.0(不用新版的原因是某些代码不支持更高的版本),要编译的LLVM源代码是8.0.0。
1、安装必要的软件。它们是: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-dev另外还要安装z3,安装方法看。
切换gcc/g++版本的方法看。
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=14、编译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等所有已编译好的软件。安装目录在上面指定了)