zoukankan      html  css  js  c++  java
  • 如何使用Ninja快速编译LLVM和Clang

    在使用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

  • 相关阅读:
    获取连接无线路由客户机信息命令
    HTB进行流量控制方法
    exec函数族用法
    java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    struts2从请求取值的三种方式
    用jsp写的网页 怎么在传递参数时包含中文?
    Struts2使用DoubleSelect实现二级级联下拉框省份城市
    MySQL里主键与外键的关系
    查看struts2源码
    WIN7系统下,用笔记本发送WIFI信号让手机无线上网!
  • 原文地址:https://www.cnblogs.com/fuland/p/3641311.html
Copyright © 2011-2022 走看看