LLVM Clang 源码环境搭建

0x01 LLVM Clang 7.1.0 源码编译

1.1 系统环境

搭建环境是在ubuntu 64下。首先安装必要的软件。

$ sudo apt-get install build-essential gcc-6 g++-6 cmake swig python-swiglpk libxml2 libxml2-dev libncurses5 libncurses5-dev libedit-dev libpython-dev

1.2 下载、编译、安装

然后下载下面列出的LLVM Clang所有源码,下载地址。

Sources:

LLVM source code (.sig)
Clang source code (.sig)
compiler-rt source code (.sig)
libc++ source code (.sig)
libc++abi source code (.sig)
libunwind source code (.sig)
LLD Source code (.sig)
LLDB Source code (.sig)
OpenMP Source code (.sig)
Polly Source code (.sig)
clang-tools-extra (.sig)

解压,并将相应的代码放置到llvm的tools目录和projects目录。

$ tar xf llvm-7.1.0.src.tar.xz
$ mv llvm-7.1.0.src llvm-7.1.0
$ tar xf cfe-7.1.0.src.tar.xz
$ mv cfe-7.1.0.src llvm-7.1.0/tools/clang
$ tar xf clang-tools-extra-7.1.0.src.tar.xz
$ mv clang-tools-extra-7.1.0.src llvm-7.1.0/tools/clang/tools/extra
$ tar xf compiler-rt-7.1.0.src.tar.xz
$ mv compiler-rt-7.1.0.src llvm-7.1.0/projects/compiler-rt
$ tar xf libcxx-7.1.0.src.tar.xz
$ mv libcxx-7.1.0.src llvm-7.1.0/projects/libcxx
$ tar xf libcxxabi-7.1.0.src.tar.xz
$ mv libcxxabi-7.1.0.src llvm-7.1.0/projects/libcxxabi
$ tar xf libunwind-7.1.0.src.tar.xz
$ mv libunwind-7.1.0.src llvm-7.1.0/projects/libunwind
$ tar xf lld-7.1.0.src.tar.xz
$ mv lld-7.1.0.src llvm-7.1.0/tools/lld
$ tar xf lldb-7.1.0.src.tar.xz
$ mv lldb-7.1.0.src llvm-7.1.0/tools/lldb
$ tar xf polly-7.1.0.src.tar.xz
$ mv polly-7.1.0.src llvm-7.1.0/tools/polly
$ tar xf openmp-7.1.0.src.tar.xz
$ mv openmp-7.1.0.src llvm-7.1.0/projects/openmp

然后在llvm-7.1.0同级目录下新建一个build目录。用于编译LLVM/Clang等全部源代码。

$ cd ..
$ mkdir build
$ cd build
$ sudo mkdir /home/paralles/clang+llvm #在根目录下新建llvm目录,就是后面llvm的安装目录
$ sudo cmake -DCMAKE_INSTALL_PREFIX=/home/paralles/clang+llvm ..
$ sudo cmake --build . # 这步很慢
$ sudo cmake --build . --target install #安装LLVM/Clang等所有已编译好的软件

PS:在虚拟机里面编译的时候c++: internal compiler error: Killed (program cc1plus)报这个错,把内存调大就可以了。

0xFF Reference
https://llvm.org/docs/CMake.html


finger,还有很多其他ID,混了多年,一条咸鱼