LLVM代码研读(1)---- 安装篇

前序:LLVM的安装

前言:这里提供了最新版本v4.0.1(2017/3)的完整安装过程,对已经有经验的LLVM/Clang完全可以忽略这些内容。相关文件与目录的组织建议尽量参考我这里的定义。以保证之后使用上的一致

1          LLVM安装前准备:

    • OS:Ubuntu Linux 16.04 LTS 64Bits(可以是实际Linux系统,我使用Windows10 64Bits + VMWare)
    • 硬件:至少120G以上硬盘。因为我们这里是为了研究LLVM/Clang,在包含Debug信息下,Build完所有源码连同Linux系统大约使用硬盘空间85G;如果使用虚拟机建议更大的可用硬盘空间

 

 

 

 

      • sudo apt-get install g++-4.9g++-4.9 g++-4.9
      • sudo apt-get install g++-4.9-arm-linux-gnueabig++-4.9-arm-linux-gnueabi
      • sudo apt-get install g++-4.9-arm-linux-gnueabihf g++-4.9-arm-linux-gnueabihf

 

 

 

      • 为了看ast-view生成的树,graphviz和xdot需要安装
      • LLVM 3.8起推荐使用cmake,因此,cmake需要安装

2          代码下载与安装:

    • 建立llvm源码目录,假定:llvm_source
    • 建立llvm工作目录(build目录),假定:llvm_project
    • 建立llvm安装目录,假定:llvm_install

 

 

 

  • 下载llvm程序:

 

 

  • 安装clang

 

 

  • 安装clang extratools

 

 

  • 安装compiler-rt

 

 

  • 安装llvm testsuite

 

 

 

  • OpenMP、libcxx和libcxxabi的安装:

 

 

 

 

  • llvm link/debug文件安装(不建议安装)

 

 

 

 

 

  • 代码建立与安装:

 

    • Debug版本的LLVM/Clang

 

 

 

 

    • Release版本的LLVM/Clang

 

 

 

 

 

    • 关于cmake的所有设置请参考:http://www.llvm.org/docs/CMake.html

 

 

 

3          安装后检查:

 

 

 

 

 

4          其他,关于安装Windows版本:

 

  • 尽量使用SVN抓取所有代码(或git)而不要使用现成压缩包。因为在Windows下解压缩clang存在错误(早先v3.8有这样问题,v4.0是否还存在,未曾试过)
    • 需要手工安装clang,compiler-RT和extra(注意同样是由svn获得)
    • 我们假定所有下载完的源码在E:/llvm路径下
  • 需要安装cmake(2.8.12.2)、python(2.7)、GnuWin32几个工具;
  • 运行cmake,我们这里假定需要安装的路径是:F:/llvm-install;因为VS下当前并非我们主要目的,通常我们选择默认设置就可以了;选择Configure,选择Visual Studio 14 2015。存放安装文件磁盘至少预留40G以上的空间

 

 

 

  • 运行VisualStudio 2015,找目录F:/llvm-install

 

 

  • Build正确后注意设置环境变量:

 

 

 

5          常见Clang工具的使用:

 

    • opt:该工具的目标是针对IR阶段的程序进行优化,其输入文件必须是LLVM的Bit code,输出为相同格式的IR文件
    • llc:将LLVM的IR文件转换成设备相关的汇编语言文件或Obj文件。您可以指定优化等级、Debug使能、是否针对目标平台优化。
    • llvm-mc:将汇编代码生成为指定格式的OBJ文件,如:ELF文件、MachO文件、PE文件等。也可反汇编相应的OBJ文件
    • lli:以解释方式或JIT运行LLVM IR文件
    • llvm-link:将几个LLVM Bitcode整合为单一一个LLVM Bitcode,注意却别于我们在编译时实用的通常的Link文件,如Linux下ld
    • llvm-as:将LLVM中人工可识别IR文件(ll)转换为LLVM Bitcode(BC)文件
    • llvm-dis:将LLVM Bitcode(BC)转换成人可阅读的IR文件(LL)

    • libLLVMCore:LLVM核心库,主要是:1)LLVM IR指令构造、检查。2)Pass管理
    • libLLVMAnalysis:包含了IR相关的几个分析Pass:如对其别名分析、相关性分析、常量折叠(Constant folding)、循环信息、内存依赖分析、指令化简等,详细见目录:lib\Analysis
    • libLLVMCodeGen:目标无关的代码生成、低级LLVM IR(机器相关)分析和转换,见相关目录:lib\CodeGen
    • libLLVMTarget:由通用目标及抽象提供对目标机的访问。这些通用的抽象提供了libLLVMCodeGen中通用的后端算法和目标相关逻辑间的通讯途径。详细目录:lib\Target,其中各目录包含了已经支持的各平台
    • libLLVMxxxxCodeGen(xxxx表示具体支持的平台,如X86等):具体平台相关的代码生成、转换和分析Pass,其是相关平台的后端。
    • libLLVMSupport:LLVM的支持库:错误处理、整形和浮点处理、命令行解析、调试、文件支持、字符串操作等;所在目录:lib\Support
    • libclangxxxx(各clang前端功能,如AST、词法分析、语法分析):提供了访问Clang前端各功能的接口。可以用于任何语言中,如Python中
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值