在使用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. 使用PowerDesigner画ER图详细教程

    转:http://www.360doc.com/content/11/0624/15/2617151_129276457.shtml 一.概念数据模型概述数据模型是现实世界中数据特征的抽象.数据模型应 ...

  2. [iOS开发]WKWebView加载JS

    最近项目要用webView加载js文件,挺同事说WKWebView比UIWebView更加好用,于是我今天就试试,百度一发,自己写了个demo. 先看我写的代码,然后再来看WKWebView跟UIWe ...

  3. 关于js的连续赋值

    首先,来看一个经典的案例: <script>var a = {n: 1}var b = a;a.x = a = {n: 2}alert(a.x);alert(b.x);</scrip ...

  4. Android网络开发之Volley--Volley基本用法ImageRequest(三)

    1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...

  5. JQuery的方便之处——宽高设置、坐标值和滚动条+事件绑定机制

    1.元素的宽高 可以通过css来进行设置,例如:$("元素").css({"宽度":"值","高度":"值&q ...

  6. JQuery操作DOM对象

    1.追加节点( 儿子关系) append()     $("已有元素").append("动态添加元素");  在已有元素的内部的后面追加一个元素 append ...

  7. selenium firefox

    https://github.com/SeleniumHQ/selenium/blob/master/java/CHANGELOG https://github.com/mozilla/geckodr ...

  8. Runtime简介以及常见的使用场景(此内容非原创,为转载内容)

    Runtime简称运行时,是一套比较底层的纯C语言的API, 作为OC的核心,运行时是一种面向对象的编程语言的运行环境,其中最主要的是消息机制,Objective-C 就是基于运行时的. 所谓运行时, ...

  9. github 更新fork分支

    在github上开发代码的时候我们习惯的是fork一个分支,然后修改再往主分支push request,这样就可以保证多人开发, 但是随着时间的推移,自己fork的版本和主分支的版本差异越来越大; 这 ...

  10. html元素被隐藏在后面

    当有些html元素是由于某些控件生成的,然后它被隐藏在其他元素的后面,但是它一开始是隐藏的,你无法直接在html或js里修改它的属性:z-index,使其可以放在更前面,这时可以在css里重新定义控件 ...