使用Ninja编译llvm

参考:https://blog.csdn.net/dreammeard/article/details/19490449

https://stackoverflow.com/questions/40042533/how-to-enable-debug-only-in-llvm-build-with-cmake

https://llvm.org/docs/CMake.html

第一步 安装ninja和cmake

1 获取并编译安装 ninja

$ git clone git://github.com/martine/ninja.git

$ cd ninja

$ ./bootstrap.py

$ sudo cp ninja /usr/local/bin/

Q: warning: A compatible version of re2c (>= 0.11.3) was not found;

changes to src/*.in.cc will not affect your build.

A: re2c 是一个用于编写快速灵活的词法分析器的工具.

$sudo apt-get install re2c

2 安装 cmake(至少需要 2.8.9):
用sudo apt-get install cmake得到的是 2.8.7–2013.3.7
可从http://www.cmake.org/cmake/resources/software.html获 取 最 新 的
cmake, 再编译.
编译 cmake 需要 QT4 和 java:
Q:Could NOT find Qt4 (missing: …
A:sudo apt-get install qt-sdk
Q:fatal error: ext2fs/ext2 fs.h: No such file or directory
A: sudo apt-get install e2fslibs-dev
Q:fatal error: curses.h: No such file or directory
A: sudo apt-get install libncurses5-dev

第二步下载源代码

llvm所有的项目的代码的svn库都在:
http://llvm.org/svn/llvm-project/
可以使用svn拷贝
1 下载llvm3.3$ svn co http://llvm.org/svn/llvm-project/llvm/branches/release_33/ llvm3.3
2 下载clang3.3到llvk3.3/tools$ cd llvm3.3/tools/
$ svn co http://llvm.org/svn/llvm-project/cfe/branches/release_33/ clang

3 下载Compiler RT到llvm3.3/projects$ cd ../projects
$ svn co http://llvm.org/svn/llvm-project/compiler-rt/branches/release_33/ compiler-rt

第三步 编译和安装

1 建立build目录$ cd llvm3.3/
$ mkdir build
2 产生ninja编译文件#可以使用-DCMAKE_INSTALL_PREFIX指定安装目录
$ cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=/opt/llvm3.3 ..

1
cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD="X86"  -DCMAKE_INSTALL_PREFIX=/opt/llvm3.4 ..

$ ln -s ../build/compile_commands.json ..

(其中,compile_commands.json是根据 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 生成的,-DCMAKE_BUILD_TYPE=Debug 开启了Debug模式,更多参考https://llvm.org/docs/CMake.html)

3 编译

$ ninja

4 安装

$ sudo ninja install

5 把安装目录加入的环境变量PATH中

可以在home目录的.bashrc中加入

export PATH=/opt/llvm3.3/bin/:$PATH

1
cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD="X86"  -DCMAKE_INSTALL_PREFIX=/opt/llvm3.4 ..