Clang 与 LLVM
我们在iOS调试中经常会看到Clang这个,那么Clang到底是什么呢?我们来简单了解一下。
Clang是一个C、C++、OC语言的轻量级编译器。源代码发布于BSD协议下。Clang是由C++编写,基于LLVM,发布于LLVM BSD许可证下的编译器。它与GNU C语言规范几乎完全兼容,并增加了额外的特性。
那么来比较一下Clang和GCC。Clang编译速度更快,编译产出更小、出错提示更友好。clang采用的是BSD协议,这是苹果资助LLVM、FreeBSD淘汰GCC换用Clang的重要原因。
Low Level Virtual Machine(LLVM)是一个开源的编译器架构,Clang是LLVM的一个编译器前端。由于优秀的设计,使得Clang非常适合用于开发源代码级别的分析工具。Clang对源程序进行语法分析和语义分析,并将分析结果转换为Abstract Syntax Tree(抽象语法树),最后使用LLVM作为后端代码的生成器。Clang的开发目标是提供一个可以替代GCC的前端编译器。由于GNU编译器套装(GCC)系统庞大,而且Apple大量使用的OC在GCC中优先级较低,同时GCC作为一个纯粹的编译系统,与IDE配合并不优秀。Clang由Apple公司开发,源代码授权使用BSD的开源授权。
LLVM(底层虚拟机)是编译器框架系统,用C++编写而成。在Xcode中已经集成了LLVM。在这里,我为大家推荐一篇相关的优秀的文章 http://www.360doc.com/content/12/0326/21/7936054_198066001.shtml 。和大家共享一下。
Clang 与 LLVM的更多相关文章
- Clang:LLVM的C语言家族前端
Clang:LLVM的C语言家族前端 Clang项目为LLVM 项目的C语言家族(C,C ++,Objective C / C ++,OpenCL,CUDA和RenderScript)中的语言提供了语 ...
- clang和llvm的安装
https://blog.csdn.net/qq_31157999/article/details/78906982
- LLVM,Clang
在使用xcode时常常会遇到这2个概念,今天总结一下. wiki中关于llvm的描述: LLVM提供了完整編譯系統的中間層,它會將中間語言(IF, Intermediate form)從編譯器取出與最 ...
- llvm+clang编译安装
最近一段时间在llvm+clang上做一些东西,所以顺便将自己如何编译安装llvm+clang写了篇文章发在这里,希望能帮助刚接触llvm+clang的童鞋少走一些弯路(我刚接触的时候为了编译安装这个 ...
- LLVM和clang
LLVM编译器架构 LLVM项目是一套工具的集合,它包括模块化.可复用的编译器及一些列工具链技术. LLVM最开始是Low Level Virtual Machine的简称,但现在它并不是传统意义上的 ...
- LLVM每日谈之二十 Everything && Clang driver
作者:史宁宁(snsn1984) 近期在读<Getting Started with LLVM Core Libraries>.这是读的第一本LLVM的书.非常多地方尽管讲的是自己知道的东 ...
- 编译器:gcc, clang, llvm
clang Clang是LLVM的前端,可以用来编译C,C++,ObjectiveC等语言.传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd) ...
- iOS开发系列-LLVM、Clang
LLVM LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持开展. 我们可以认为LLVM是一个完整 ...
- Clang与libc++abi库安装
系统ubuntu64位 Clang4.0 参考: 1 https://github.com/yangyangwithgnu/use_vim_as_ide#0.1 其中 第7章 工具链集成 2. htt ...
随机推荐
- ubuntu12.04已安装SQLite3
而简单易用
今天想写一点app,使用数据库,所以在这里简要地记住它是安装和使用. 1.安装SQLite3 命令行下输入:sudo apt-get install sqlite3 2.安装SQLite3编译须要的工 ...
- 前端JS开发框架-DHTMLX--dhtmlXTree
介绍 dhtmlxTree是一个功能丰富的JavaScript树菜单 它允许您快速添加一个好看的,基于ajax的web页面的分层树. treeview支持在线节点编辑.先进的拖放,三态复选框等等.由 ...
- linux 定时任务计划
crond: unrecognized service 无crond解决办法 安装计划任务:yum -y install vixie-cron
- Android(java)学习笔记146:Bundle和Intent类使用和交互
Bundle只是一个信息的载体 将内部的内容以键值对组织 ,Intent负责Activity之间的交互自己是带有一个Bundle的.Intent.putExtras(Bundle bu ...
- ios开发时候,出现A valid provisioning profile for this executable was not found 错误
今天一大早起来,做ios的开发,发现了一下错误:A valid provisioning profile for this executable was not found 错误的产生是在开发模式下产 ...
- Mysql+keeplived+lvs
最近要做个高可用的mysql.用mysql主主复制方式保证两台数据库的数据一致.结合lvs和keepalived一起使用(keepalived+lvs的设置会再另外一篇文章里写). 搭好环境之后,本人 ...
- [Form Builder]Form中的validate验证事件
转:http://yedward.net/?id=70 Form的validate行为可以由一个总的form级别的validation属性来控制,可以通过set_form_property来设置成PR ...
- Servlet & JSP - Decorating Requests and Responses
Servlet API 提供了四个包装类:ServletRequestWrapper.ServletResponseWrapper.HttpServletRequestWrapper.HttpServ ...
- FastFrameWork 快速开发框架
前言 FastFrameWork 快速开发框架是一款基于敏捷并行开发思想和Microsoft .Net构件(插件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市场快速变化的 ...
- UIWebView和UIActivityIndicatorView的结合使用
环境:Xcode6.1 UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等.这篇文件将结合UIActivityIndicatorView控件制作一个 ...