Clang:LLVM的C语言家族前端
Clang:LLVM的C语言家族前端
Clang项目为LLVM 项目的C语言家族(C,C ++,Objective C / C ++,OpenCL,CUDA和RenderScript)中的语言提供了语言前端和工具基础结构。提供了GCC兼容的编译器驱动程序(clang)和MSVC兼容的编译器驱动程序(clang-cl.exe)。可以立即获取并构建源。
特点和目标
该项目的一些目标包括:
- 快速编译和低内存使用
- 表达诊断(示例)
- GCC兼容性
- 基于模块化库的架构
- 支持各种客户端(重构,静态分析,代码生成等)
- 允许与IDE紧密集成
- 使用LLVM'Apache 2'许可证
- 真实的,production quality compiler产品质量的编译器
- 一个简单易学的代码库
- 适用于C,Objective C,C ++和Objective C ++的单个统一解析器
- 与C / C ++ / ObjC及其变体的一致性
当然,这只是Clang的目标和功能的粗略概述。要真正了解它的全部含义,请参阅“功能”部分,其中详细介绍了每个功能,并对其进行了详细说明。
为什么?
新前端的开发是从对编译器的需求开始的,该编译器需要更好的诊断,与IDE的更好集成,与商业产品兼容的许可证以及易于开发和维护的灵活编译器。所有这些都是在可以满足这些需求的新前端上开展工作的动机。
当前状态
当针对X86-32,X86-64和ARM时,Clang被认为是产品质量的C,Objective-C,C ++和Objective-C ++编译器(其它目标可能会有警告,但通常很容易解决)。例如,在产品中使用Clang来构建对性能至关重要的软件,例如Chrome或Firefox。
如果正在寻找源分析或源到源转换工具,那么Clang可能是理想选择。Clang支持C ++ 11,C ++
14和C ++ 17,请参阅C ++状态页面以获取更多信息。
Clang:LLVM的C语言家族前端的更多相关文章
- 编译器:gcc, clang, llvm
clang Clang是LLVM的前端,可以用来编译C,C++,ObjectiveC等语言.传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd) ...
- clang LLVM 介绍和安装(Ubuntu10 64位)
http://www.csdn.net/article/2013-11-27/2817632 的对Stanley B.Lippman采访提到clang的一些优点,以前程序员杂志也写过,为了提高系统的性 ...
- Please install [clang](http://clang.llvm.org/) or check configuration `clang.executable`
解决方法: 1.安装clang 第一步:首先打开VScode编辑器 第二步:点击左侧“应用商店”栏 第三步:在“应用商店搜索拓展”栏输入关键字“clang” 第四步:安装提示的“C/c++ clang ...
- 再谈 Go 语言在前端的应用前景
12 月 23 日,七牛云 CEO & ECUG 社区发起人许式伟先生在 ECUG Con 2018 现场为大家带来了主题为<再谈 Go 语言在前端的应用前景>的内容分享. 本文是 ...
- CentOS 7 编译安装clang+llvm
天在CentOS上将最新版本的LLVM套件(LLVM,Clang和Libc++)编译安装好了,中间遇到了不少问题.虽然已经有很多博客介绍如何编译安装LLVM了,但是根据我自己亲身体验的情况来看,还是有 ...
- ubuntu下载源码clang + llvm+lldb 编译+安装
[本文可能涉及到Ubuntu安装以下工具:] A.g++ B.gcc C.make D.cmake E.clang(10.0.1)(必须) F.llvm(10.0.1)(必须) G.lldb(10.0 ...
- 学习java应该了解一些html超文本标记语言(前端)
在自己学习的过程中遇到一些内容,怕忘记所以借助博客加深印象也方便查找! html超文本标记语言中,分行级元素和块级元素. 行级元素的含义:行级元素不独占一行,相邻的行级元素在一行排列:行级元素可以控制 ...
- Django学习手册 - 模板语言(前端获取后台数据)
先在views视图内,定义列表数据,以及字典数据.运用render函数传递两个列表数据至前端. from django.shortcuts import render list_info = [ {& ...
- “Clang” CFE Internals Manual---中文版---"Clang"C语言前端内部手册
原文地址:http://clang.llvm.org/docs/InternalsManual.html 译者:史宁宁(snsn1984) "Clang"C语言前端内部手册 简介 ...
随机推荐
- 【Springboot】Springboot监听器Demo
/** * @author: yq * @date: 2020/8/31 0:01 * @description 自定义事件 */ @Data public class MyEvent extends ...
- Flyway-数据库迁移工具
一.什么是Flyway? Flayway是一款数据库版本控制管理工具,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和jav ...
- 设计模式-UML图简单介绍
直接上法宝: 1.类(Class) 类图分三层: 第一层显示类的名称,如果是抽象类,则就用斜体显示. 第二层是类的特性,通常就是字段和属性. 第三层是类的操作,通常是方 ...
- POJ3498最大流,枚举终点,企鹅,基础最大流
题意: 有一n个冰块,每个冰块上都有一些企鹅,所有的企鹅要跳到一个冰块上去,但是由于起跳是的后坐力原因导致每个冰块最多条mi次,最后问你所有的企鹅都跳到一个冰块上去的那块冰块可以是哪一块, ...
- Bettercap2.X版本的使用
目录 Bettercap 安装 ARP欺骗 DNS 欺骗 注入脚本 结合Beef-XSS 替换下载文件 Bettercap 很多人应该都听过或者用过Ettercap,这是Kali下一款优秀的ARP欺骗 ...
- Idea创建Maven Web项目的web.xml版本问题
问题描述:创建Maven Web项目时,选择MavenWebapp模板时,自动生成的web.xml文件版本为1.4,如图所示 如何才能修改为常用的4.0版本的xml文件呢? 这个文件是从Maven仓库 ...
- 查看.class文件的工具
1.JDK 提供的 javap -c javap -c test.class 2.将test.class用idea打开.
- Rabbit MQ一些参数解释
//ConnectionFactory(连接工厂): 生产Connection的的工厂 //Connection(连接):是RabbitMQ的socket的长链接,它封装了socket协议相关部分逻辑 ...
- TypeScript 中限制对象键名的取值范围
当我们使用 TypeScript 时,我们想利用它提供的类型系统限制代码的方方面面,对象的键值,也不例外. 譬如我们有个对象存储每个年级的人名,类型大概长这样: type Students = Rec ...
- Flink去重统计-基于自定义布隆过滤器
一.背景说明 在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个: 基于Hashset来实现去重 数据存在内存,容量小,服务重启会丢失. 使用状态编程Val ...