C/C++编译器 clang

BSD
C/C++
跨平台
2012-01-13
红薯

Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC

Clang 开发事出有因,Wiki 介绍如下:

Apple 使用 LLVM 在不支持全部 OpenGL 特性的 GPU (Intel 低端显卡) 上生成代码 (JIT),令程序仍然能够正常运行。之后 LLVM 与 GCC 的集成过程引发了一些不快,GCC 系统庞大而笨重,而 Apple 大量使用的 Objective-C 在 GCC 中优先级很低。此外 GCC 作为一个纯粹的编译系统,与 IDE 配合很差。加之许可证方面的要求,Apple 无法使用修改版的 GCC 而闭源。于是 Apple 决定从零开始写 C family 的前端,也就是基于 LLVM 的 Clang 了。

Clang 的特性:

  1. 快:通过编译 OS X 上几乎包含了所有 C 头文件的 carbon.h 的测试,包括预处理 (Preprocess),语法 (lex),解析 (parse),语义分析 (Semantic Analysis),抽象语法树生成 (Abstract Syntax Tree) 的时间,Clang 是 Apple GCC 4.0 的 2.5x 快。(2007-7-25)
  2. 内存占用小:Clang 内存占用是源码的 130%,Apple GCC 则超过 10x。
  3. 诊断信息可读性强:我不会排版,推荐去网站观看。其中错误的语法不但有源码提示,还会在错误的调用和相关上下文的下方有~~~~~和^的提示,相比之下 GCC 的提示很天书。
  4. GCC 兼容性。
  5. 设计清晰简单,容易理解,易于扩展增强。与代码基础古老的 GCC 相比,学习曲线平缓。
  6. 基于库的模块化设计,易于 IDE 集成及其他用途的重用。由于历史原因,GCC 是一个单一的可执行程序编译器,其内部完成了从预处理到最后代码生成的全部过程,中间诸多信息都无法被其他程序重用。Clang 将编译过程分成彼此分离的几个阶段,AST 信息可序列化。通过库的支持,程序能够获取到 AST 级别的信息,将大大增强对于代码的操控能力。对于 IDE 而言,代码补全、重构是重要的功能,然而如果没有底层的支持,只使用 tags 分析或是正则表达式匹配是很难达成的。
加载中

评论(2)

OSC_KulLHJ
OSC_KulLHJ
我怎么觉得MSVC的提示才是天书呢
t
tedwan
what is the most common reason for this error? ==48120==ERROR: AddressSanitizer failed to allocate 0x3414000 (54607872) bytes of LargeMmapAllocator (errno: 12) #clang#

英特尔基于 LLVM 的 SYCL 开源编译器现已发布

上周,英特尔发布了 LLVM/Clang 的对 SYCL 编程的支持,该特性作为英特尔 CPU、FPGA和其他处理器支持的异构变成的一部分。更多关于这些特性细节信息,请移步到 intel/llvm on GitHub 。 通过...

01/30 08:11

苹果投资 Clangd 与重构工具,强化自家 IDE Xcode

近日,苹果员工 Alex L 代表公司发表声明称,对于基于 libclang 的工具基础设施的工作,已经做了工作重心转移。苹果认为 Clangd 是交互式 Clang 工具的首选解决方案,他们将把更多精力放在加...

2018/04/22 08:07

Visual C++ 将整合 Clang

微软在 11 月释出的 Visual C++更新将整合 Clang 开源 C 和 C++编译器, 开发者将可以用 Clang 编译Windows应用程序。Visual Studio 2015已经整合了Clang编译器,但它是被用于Android和 iOS上...

2015/10/23 07:57

微软将 Clang 带到 Windows

微软的集成开发工具现在支持使用Clang构建Android和iOS应用。Clang是LLVM的编译器前端。微软的Jim Radigan在Build大会上演示了这一功能:Clang 作为前端,微软的编译器C2作为后端替代LLVM。...

2015/05/03 07:37

Clang 宣布全面支持 C++11 标准

Clang 的开发者宣布支持所有的 C++11 语言标准特性,C++11 语言标准是在 2011年夏季发布的。最新的 ISO 标准特性添加了支持继承构造器和 thread_local 变量。 LLVM 3.3 和 Clang 计划在 2013...

2013/04/22 23:15

clang 成为 FreeBSD x86 的默认编译器

来自 FreeBSD 邮件列表的消息称:clang 已经成为了 x86 版本 FreeBSD 的默认编译器,目前可能还会有一个 ABI 问题,但详细大多数用户可以非常平滑的过渡。 Clang 是一个 C++ 编写、基于 LLVM...

2012/11/08 08:28

Clang 3.1 发布,支持 C++11

Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC。 Clang 3.1 支持匿名结构和匿名 union,可使用 =std...

2012/05/23 09:50

FreeBSD 10 将使用 Clang 编译器替换 GCC

来自 phoronix 的消息称,根据 FreeBSD 2012 第一季度的状态报告 显示,来自 LLVM 的 Clang 编译器将成为 FreeBSD 10 的默认 C/C++ 编译器,废弃使用 GPL 授权协议的 GCC,而 Clang 的授权协...

2012/05/13 13:50

没有更多内容

加载失败,请刷新页面

没有更多内容

2
回答
Mac上安装了QT5.5编译的时候报错'cstddef' file not found
Sylow 的回答 2018/11/27 16:46
最佳答案
已解决,安装Xcode9就行。原因是Xcode10 去除了stdlibc++库
3
回答
编译clang的时候ld进程耗尽内存,真是伤脑筋,我该怎么办呢?
Force武装卫队 的回答 2016/04/16 22:53
最佳答案
如果是 configure&&make你换一个编译参数 不要使用 Debug+Asserts ,如果是 cmake 使用 Release 模式, 当然这都不能解决根本问题,你还是需要使用 x64 位系统和更大的内存。
2
回答
clang编译c++11通不过

hen guys: 我在CentOS 6.5 上安装了clang3.4.2 写了一个测试的程序: 1 #include <stdio.h> 2 #incl...

2014/09/23 10:31
5
回答
使用 musl 和 clang 编译 C 程序

假设你正在使用基于 Debian 的 Linux 发行版,你可以使用如下命令安装 musl: sudo apt-get install musl-dev ...

2015/06/28 08:09
4
回答
Cygwin中clang找不到iostream
suncloud 的回答 2015/05/14 13:41
最佳答案
已解决 见http://stackoverflow.com/questions/13297285/how-to-build-llvm-and-clang-on-cygwin
3
回答
为什么clang/llvm一定要vc 或者 mingw?

为什么clang/llvm一定要vc 或者 mingw,不能独立吗?缺哪些部件啊?

2014/09/15 10:45
2
回答
clang parseast,include file not found
Force武装卫队 的回答 2015/04/28 11:14
最佳答案
searchDir搞定没有
6
回答
在Windows下面進行LLVM與CLANG的安裝

需要環境 本文假設你已經有下面的工具安裝在系統中,並且可以正確的使用。 SVN client (這是為了抓最新的llvm與clang的source cod...

2012/11/26 21:29
20
回答
请问大家,现在是GCC发展的好,还是Clang更有优势?

PS:之前有看clang帖子的介绍: http://www.oschina.net/p/clang

2012/08/13 10:18
1
回答
clangonwin 能不能制作交叉编译器?

@李博文 你好,想跟你请教个问题: clangonwin 能不能制作一个交叉编译器呢?编译器运行环境是 windows,生成的目标代码是 arm,谢谢。

2014/03/28 08:02

没有更多内容

加载失败,请刷新页面

No.0 C++基础---C++经典著作列表

# C++经典著作列表 *C++入门书籍:《C++全方位学习》…… *C++进阶书籍:《C++编程思想》…… *C++高阶书籍:《C++网络编程》……

2015/07/02 21:10
56
1
C++ STL编程轻松入门 2

1.3.3 STL和GP,GP和OOP   正如前面所提到的,在STL的背后蕴含着泛型化程序设计(GP)的思想,在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的...

2015/11/21 10:30
58
0
c++ 书籍(zz)

 From:http://blog.csdn.net/is2120/article/details/44317241 下面是转载的在博客上看到的一个C++书籍阅读清单,可以参考下: 阶段 1 《Essential C++》 这是一本内容不多但很实用的C++...

2015/04/09 11:48
19
0
C++学习路线

一)语言入门: 《C++ Primer》 最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中) 适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对...

2018/03/27 16:13
26
0
cpp extern "c" keyword

When you state that a function has extern "C" linkage in C++, the C++ compiler does not add argument/parameter type information to the name used for linkage. http://www.math-lin...

2013/01/31 02:33
37
0
50个c/c++源代码网站

C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。 1、http://snippets.dzone.com/tag/c/ --数以千计的...

2014/04/11 10:23
43
0
C++的坑真的多吗?

先说明一下,我不希望本文变成语言争论贴。希望下面的文章能让我们客观理性地了解C++这个语言。(另,我觉得技术争论不要停留在非黑即白的二元价值观上,这样争论无非就是比谁的嗓门大,比哪...

2012/08/09 10:53
94
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部