• 如何使用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

  • 相关阅读:
    [TimLinux] TCP全连接队列满
    [TimLinux] JavaScript 中循环执行和定时执行
    [TimLinux] JavaScript 事件
    [TimLinux] JavaScript 获取设置在CSS类中的属性值
    [TimLinux] JavaScript 面向对象程序设计
    [TimLinux] JavaScript 引用类型——Date
    [TimLinux] django html如何实现固定表头
    [TimLinux] Django 信号
    [TimLinux] Django 中间件
    安卓存储之文件存储方式j
  • 原文地址:https://www.cnblogs.com/fuland/p/3641311.html
Copyright © 2020-2023  润新知