LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持开展。2006年Chris Lattner加盟Apple Inc.并致力于LLVM在Apple开发体系中的应用。Apple也是LLVM计划的主要资助者[引自百度百科]。

我们可以认为LLVM一个完整的编译器架构,也可以认为它是一个用于开发编译器、解释器相关的库。

    在理解LLVM时,我们可以认为它包括了一个狭义的LLVM和一个广义的LLVM。广义的LLVM其实就是指整个LLVM编译器架构,包括了前端、后端、优化器、众多的库函数以及很多的模块;而狭义的LLVM其实就是聚焦于编译器后端功能(代码生成、代码优化、JIT等)的一系列模块和库。

    接下来,简要的介绍一下Clang。

Clang是一个C++编写、基于LLVM、发布于LLVM BSD许可证下的C/C++/Objective-C/Objective-C++编译器。那么为什么已经有了GCC还要开发Clang呢?Clang相比于GCC有什么优势呢?

其实,这也是Clang当初在设计开发的时候所主要考虑的原因。Clang是一个高度模块化开发的轻量级编译器,它的编译速度快、占用内存小、非常方便进行二次开发。

最后,我们大概讲一讲LLVM和Clang的关系。我们将它们对应于传统的编译器当中的几个独立的部分,这样能够更加方便明确生动的表述。

其实,对应到这个图中,我们就可以非常明确的找出它们的对应关系。Clang其实大致上可以对应到编译器的前端,主要处理一些和具体机器无关的针对语言的分析操作;编译器的优化器部分和后端部分其实就是我们之前谈到的LLVM后端(狭义的LLVM);而整体的Compiler架构就是LLVM架构

转载于:https://www.cnblogs.com/saintlas/p/5738739.html

LLVM与Clang的概述及关系相关推荐

  1. 经典编译器组成(前端+优化器+后端)以及LLVM和Clang简介

    目录 1,典型的编译器结构:前端+优化器+后端 2,LLVM 简介 3,Clang简介 1,典型的编译器结构:前端+优化器+后端 一个传统的静态编译器(比如C 编译器)最普遍的设计是分为三个部分,如下 ...

  2. LLVM与Clang编译图例

    LLVM与Clang编译图例 参考链接: https://blog.csdn.net/u012874859/article/details/108530256

  3. LLVM与Clang局部架构与语法分析

    LLVM与Clang局部架构与语法分析 Clang与LLVM LLVM整体架构,前端用的是clang,广义的LLVM是指整个LLVM架构,一般狭义的LLVM指的是LLVM后端(包含代码优化和目标代码生 ...

  4. LLVM 与 Clang 介绍 — LinuxTOY

    LLVM 与 Clang 介绍 - LinuxTOY LLVM 是 Low Level Virtual Machine 的简称,这个库提供了与编译器相关的支持,能够进行程序语言的编译期优化.链接优化. ...

  5. llvm安装方式_安装 LLVM 和 Clang

    LLVM 是伊利诺伊大学的一个开源项目,LLVM 提供了完整的 C/C++工具链,Clang 属于其中的一个子项目,是 LLVM 原生的 " C/C++/Objective-C" ...

  6. 转:GCC,LLVM,Clang编译器对比

    GCC,LLVM,Clang编译器对比 转自: http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html 在XCode中,我们 ...

  7. LLVM 与 Clang 介绍

    晚上听国软徐纪元学弟给我说起了他刚装上的 Mac Lion 操作系统,也说到了最近 Apple 推出的新版本的 Xcode 4.2 在 iOS 4.iOS 5 程序开发中,加入了 automatic  ...

  8. 什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

    这个问题主要讲Xcode编译器的认知,在学习iOS之前有必要学习一下Objective-C的编译环境. 在了解LLVM和Clang之前,先得了解一下什么是编译器. 编译器是一种计算机程序,它将某种编程 ...

  9. 详解三大编译器:gcc、llvm 和 clang

    传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd). 编译器一般构成 传统的编译器通常分为三个部分,前端(frontEnd),优化器(Opti ...

  10. LLVM和Clang背后的故事

    LLVM是Apple官方支持的编译器,而该编译器的前端是Clang,这两个工具都被集成到了Xcode里面.在这篇文章中,我们来了解一下LLVM和Clang背后的故事. 在很长一段时间里,Apple一直 ...

最新文章

  1. python求偶奇数和差编程_选择最大奇数Python
  2. UCloud-201809-001:Redis服务未授权访问漏洞安全预警
  3. 华为harmonyos公测,华为鸿蒙 Harmony OS 2.0 第二轮公测已开启,赶紧申请报名
  4. Board Moves CodeForces - 1353C(数学)
  5. javascript 栈 Stack
  6. 智慧交通day02-车流量检测实现08:目标跟踪中的数据关联(将检测框bbox与卡尔曼滤波器的跟踪框进行关联匹配)
  7. Vertex Texture Fetch 顶点纹理拾取
  8. 汇编语言-显示九九乘法表
  9. php操作xml类,PHP实现的XML操作类【XML Library】
  10. 编译问题处理:undefined symbol: OPENSSL_init_crypto
  11. [转]FastJSON通过SerializeFilter定制序列化
  12. Xmodem/Ymodem/Zmodem协议详解
  13. 如何在excel中实现数据的转置(行列互换)
  14. 实验02 使用网络模拟器Packet Tracer
  15. 计算机程序设计艺术 pdf版
  16. 产品设计如何鼓励用户上传头像?
  17. matlab中axis square与axis equal区别
  18. php 生成会员卡号,PHP生成独一会员卡号
  19. 全面掌控!打造智慧城市建设的“领导驾驶舱”
  20. 数据库设计层次3:构建表

热门文章

  1. 如何进行大数据的入门级学习?
  2. YII2中behavior行为的理解与使用
  3. Petya到底是个什么鬼
  4. Android Eclipse 导入 AS Gradle AAR 库手册
  5. BZOJ1070[SCOI2007] 修车
  6. docker工作原理、组成部分、特点优点
  7. multipartfile获取文件路径_已知路径,通用获取文件名、后缀、类型
  8. linux 服务编程,Linux高性能服务编程(I/O复用)
  9. 不能将紧实的字段 绑定到_紫光芯城市政配套建设项目样板段预计下月完成
  10. c语言中宽字节,fgetwc读取的是宽字节么?