llvm初识及clang套件安装工具

本文介绍了编译器的基本概念,特别是对于编译型语言如C/C++。重点讨论了LLVM作为编译器基础设施的角色,以及Clang作为前端编译器的功能。LLVM以其通用的中间表示(IR)和平台无关性,提供了一种灵活的编译解决方案。同时,文章还提供了安装LLVM编译环境的简要步骤。
摘要由CSDN通过智能技术生成

新近实习的岗位是倒腾编译器的,主要研究c/c++的clang编译器的一些特性。Python转c/c++,也是第一次开始接触编译器这么高大上的底层玩意儿,特此记录。

编译器简述

python/java这类解释型语言,只需要在运行平台上安装对应的虚拟机、解释器就可以将源码按照规范转成对应平台的机器码生成可执行程序。而c/c++这种编译型语言则需要将源码在特定的平台上生成适用的机器码并生成可执行文件,在不同机器平台上实现源码到机器码生成可执行文件的工具就叫编译器。整个编译过程:

预处理:处理诸如宏定义、include分析等,不进行语法检查
编译:翻译源码,进行语法检查,生成汇编文件
汇编:处理汇编文件,生成目标代码
连接:调用linker连接器,对源码中调用的库文件进行连接,生成可执行文件

编译器主要的构成分为三部分:

前端 -- AST -- 后端

前端用于源码解析,最终生成表示源码逻辑的抽象语法树(Abstract Syntax Tree,AST),后端主要将抽象表示的中间代码转为最后适用平台的机器码。

LLVM

LLVM本身并不是编译器,而是一种编译器的基础架构,在编译器构成部分中,作为一个基础后端,进行机器码的生成处理。而之所以LLVM属于一种通用编译,是因为他更强调不同平台中间码IR的强一致性,由后端LLVM进行对统一格式IR到不同平台机器码的适配,简言之,LLVM的编译器架构,更像是底层化的解释器——不同于java、python解释器、虚拟机从源码到最终机器码的全部解释,LLVM架构采用前端正常编译,后端进行特殊解释的方式。
其中被视为编译器的clang起着前端标准编译生成中间码的作用。因此,准确说,clang并不是编译器,clang是LLVM编译架构的编译前端而已,仅仅是LLVM众多项目中的一个。而整个的编译过程最终都要LLVM的编译基础架构将生成的中间码转成机器码。

安装LLVM套件

安装LLVM编译环境,LLVM作为基于寄存器的虚拟机解释的编译架构,是需要安装的。官方推荐将依赖LLVM编译架构的项目源码放到LLVM的源码包中,由LLVM编译安装一起编译部署。比如,clang就是将源码包放到tools目录下更名为clang

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值