在使用Make工具编译LLVM是非常耗时的。往往需要三四个小时。但是使用goolge开源的ninja编译LLVM只需要10到20分钟。

本文以llvm3.3为例,演示在linux上编译和安装过程。

第一步 安装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 ..
$ ln -s ../build/compile_commands.json ..
3 编译

$ ninja

4 安装

$ sudo ninja install

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

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

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

如何使用Ninja快速编译LLVM和Clang的更多相关文章

  1. MinGW-W64 编译 LLVM 与 Clang

    原文: http://blog.csdn.net/happywjh666/article/details/51415723 编译环境: 系统 --win10 64位 gcc -- version 5. ...

  2. Windows 7 X64平台编译LLVM+clang

    1 源码包 去LLVM官方网站下载最新的源码,Windows平台下载三个即可(2019.04.24版本为LLVM 8.0.0): LLVM source code (.sig) Clang sourc ...

  3. 编译llvm+clang

    第一步,下载llvm代码: git clone git@github.com:llvm-mirror/llvm.git 第二步,进入llvm/tools目录并下载clang代码 cd llvm/too ...

  4. iOS开发系列-LLVM、Clang

    LLVM LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持开展. 我们可以认为LLVM是一个完整 ...

  5. LLVM与Clang的概述及关系

    LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time).链接时间(link-time).运行时间(run-time ...

  6. 转:GCC,LLVM,Clang编译器对比

    GCC,LLVM,Clang编译器对比   转自: http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html 在XCode中, ...

  7. 在Linux CentOS上编译并安装Clang 3.5.0

    编译CoreCLR需要Clang 3.5,而CentOS上安装的是Clang 3.4.2(yum repos中最新版也是这个),只能自己手工编译LLVM的源代码进行安装. (注:CentOS的版本是6 ...

  8. ios llvm and clang build tools

    1. 使用 libclan g或 clang 插件 包括( libclang 和  Clangkit) 备注: Clangkit,它是基于 clang 提供的功能,用 Objective-C 进行封装 ...

  9. 转:LLVM与Clang的概述及关系

    转:http://www.cnblogs.com/saintlas/p/5738739.html      LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言 ...

随机推荐

  1. CSS中关于margin的理解误区

    思考一 在以前,我对于margin的理解是这样的,此处用margin-top举例:指的是离相邻元素之间的距离. 但是实际是:相对于自身原来的位置偏移. 举个例子: <!DOCTYPE HTML ...

  2. Lambda应用设计模式 [转载]

    Lambda应用设计模式   前言 在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式.这些模式可能不全是新的模式,有的参考自 Java ...

  3. Pythagorean Triples

    Pythagorean Triples time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. 获取一个gridcontrol的数据行数

    ((DataTable)gc_excel.DataSource).Rows.Count;

  5. hashmap如何初始化

    现在知道的有两种: 1) Map<String, String> hashMap = new HashMap<String, String>(){            {   ...

  6. 用css制作一个三角形箭头

    剑走偏锋——用css制作一个三角形箭头   通常,我们做上图那个三角形,一般都是做张图,而且需要两张,因为一般都是下拉菜单的效果,需要有个hover的样式,箭头是反的.那是不是有更好的办法呢,毕竟要用 ...

  7. Varnish CentOS 6.4 x64

    CentOS 6.4 x64 Varnish 安装配置     Varnish的官方网址为http://varnish-cache.org   首先下载Varnish 稳定版本3.0.3   wget ...

  8. 为什么jQuery要返回jQuery.fn.init对象

    作者:zccst jQuery = function( selector, context ) { // The jQuery object is actually just the init con ...

  9. iOS给model排序

    今天有朋友问我怎么给Model排序,我顺便写了一个例子, 以下是代码,很简洁可以直接用. Person *per = [[Person alloc] init]; per.name = @" ...

  10. UVA 11551 Experienced Endeavour

    矩阵快速幂. 题意事实上已经告诉我们这是一个矩阵乘法的运算过程. 构造矩阵:把xi列的bij都标为1. 例如样例二: #include<cstdio> #include<cstrin ...