最近一段时间在llvm+clang上作一些东西,因此顺便将本身如何编译安装llvm+clang写了篇文章发在这里,但愿能帮助刚接触llvm+clang的童鞋少走一些弯路(我刚接触的时候为了编译安装这个费了好大的力气,全是眼泪这里很少说了)。首先介绍一下,我用的ubuntu麒麟16.10的操做系统(不是虚拟机,我在虚拟机上编译安装了不少次都以失败了结)。具体过程以下:html
首先先安装svn,用来check out llvm的码源前端
aptitude install subversionbootstrap
而后checkout llvm的码源:ubuntu
checkout的是llvm项目的主要代码svn
cd where-you-want-llvm-to-live工具
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvmui
clang是llvm项目的 C, C++, Objective C and Objective C++ 前端spa
cd llvm/tools操作系统
svn co http://llvm.org/svn/llvm-project/cfe/trunk clanghtm
cd ../..
1.4 Check out extra Clang tools: (可选的)
Extra中包含的是利用clang提供的借口开发的一些额外工具,咱们能够在这些工具的基础上开发咱们本身的工具。
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
cd ../../../..
Compiler-RT主要是为Clang和LLVM提供运行时库的支持
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../..
cd where-you-want-llvm-to-live
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suit
llvm支持cmake和autotools进行编译。不一样编译方式对后续建立自定义的pass的方式就不一样,例如若是使用cmake编译,写pass的时候就不须要建立makefile文件,而须要建立CMakeList.txt文件。
在编译以前,须要参看对系统的要求:
http://llvm.org/docs/GettingStarted.html#requirements
直接使用指令安装的cmake的版本太低,所以须要本身安装cmake。
从http://www.cmake.org/download/下载cmake的码源,解压在安装。(我本身安装的是cmake3.6)
./bootstrap
make
make install
llvm为了防止编译的中间结果分布在码源目录中,影响码源的结构。所以不支持目录内编译。须要在码源目录外建立额外的编译目录。
mkdir build
cd build
cmake -G "Unix Makefiles" ../llvm
make
make install
在make的时候能够选择make -jn指令来进行并行编译,加快编译的速度。n表示你所拥有的处理器数。
另外,须要强调的是,llvm+clang 3.6之前的版本但是使用./configure来进行编译,3.6之后的版本,只能使用cmake进行编译。
---恢复内容结束---
---恢复内容结束---