zoukankan      html  css  js  c++  java
  • llvm+clang编译安装

    最近一段时间在llvm+clang上做一些东西,所以顺便将自己如何编译安装llvm+clang写了篇文章发在这里,希望能帮助刚接触llvm+clang的童鞋少走一些弯路(我刚接触的时候为了编译安装这个费了好大的力气,全是眼泪这里不多说了)。首先介绍一下,我用的ubuntu麒麟16.10的操作系统(不是虚拟机,我在虚拟机上编译安装了很多次都以失败告终)。具体过程如下:

    1. 下载码源

    首先先安装svn,用来check out llvm的码源

           aptitude install subversion

    然后checkout llvm的码源:

    1.2 Check out LLVM

    checkout的是llvm项目的主要代码

    cd where-you-want-llvm-to-live

    svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm

    1.3 Check out Clang

    clangllvm项目的 C, C++, Objective C and Objective C++ 前端

    cd llvm/tools

    svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

    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 ../../../..

    1.5 Check out Compiler-RT

    Compiler-RT主要是为ClangLLVM提供运行时库的支持

    cd llvm/projects

    svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt

    cd ../..

    1.6 Check out Test Suite Source Code(可选的)

    cd where-you-want-llvm-to-live

    cd llvm/projects

    svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suit

    2. 编译安装

    llvm支持cmakeautotools进行编译。不同编译方式对后续创建自定义的pass的方式就不同,例如如果使用cmake编译,写pass的时候就不需要创建makefile文件,而需要创建CMakeList.txt文件。 
    在编译之前,需要参看对系统的要求: 
    http://llvm.org/docs/GettingStarted.html#requirements

    2.1 安装cmake

    直接使用指令安装的cmake的版本过低,因此需要自己安装cmake。 
    http://www.cmake.org/download/下载cmake的码源,解压在安装。(我自己安装的是cmake3.6) 

    ./bootstrap

    make

    make install

    2.2 编译安装

    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进行编译。

    ---恢复内容结束---

    ---恢复内容结束---

  • 相关阅读:
    day35—JavaScript操作元素(创建、删除)
    day34—JavaScript实现DOM操作
    day33—前端开发的模块化和组件化
    day32—CSS多列布局学习
    day31—CSS Reset 与页面居中布局
    JVM(18)之 Class文件
    JVM(17)之 准备-解析-初始化
    JVM(16)之 双亲委派模型
    JVM(15)之 类加载器
    JVM(14)之 类加载机制
  • 原文地址:https://www.cnblogs.com/Long-w/p/6345028.html
Copyright © 2011-2022 走看看