来自
phoronix 的消息称,根据
FreeBSD 2012 第一季度的状态报告 显示,来自 LLVM 的 Clang 编译器将成为 FreeBSD 10 的默认 C/C++ 编译器,废弃使用 GPL 授权协议的 GCC,而 Clang 的授权协议是 BSD。
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 的特性:
- 快:通过编译 OS X 上几乎包含了所有 C 头文件的 carbon.h 的测试,包括预处理 (Preprocess),语法 (lex),解析 (parse),语义分析 (Semantic Analysis),抽象语法树生成 (Abstract Syntax Tree) 的时间,Clang 是 Apple GCC 4.0 的 2.5x 快。
- 内存占用小:Clang 内存占用是源码的 130%,Apple GCC 则超过 10x。
- 诊断信息可读性强:(推荐去网站观看)其中错误的语法不但有源码提示,还会在错误的调用和相关上下文的下方有~~~~~和^的提示,相比之下 GCC 的提示犹如天书。
- 和GCC的兼容性。
- 设计清晰简单,容易理解,易于扩展增强。与代码基础古老的 GCC 相比,学习曲线平缓。
- 基于库的模块化设计,易于 IDE 集成及其他用途的重用。由于历史遗留原因,GCC 只是一个单一的可执行程序编译器,其内部完成了从预处理到最后代码生成的全部过程,中间诸多信息都无法被其他程序重用。Clang 将编译过程分成彼此分离的几个阶段,AST 信息可序列化。通过库的支持,程序能够获取到 AST 级别的信息,将大大增强对于代码的操控能力。对于 IDE 而言,代码补全、重构是重要的功能,然而如果没有底层的支持,只使用 tags 分析或是正则表达式匹配是很难达成的。
更多关于Clang的详细信息,或者下载地址请点这里
本文转载自:
开源中国
分享到:
相关推荐
一个GCC插件,它以输出编译器参数。 它试图模拟-MJ参数对clang的作用。...将使用该插件的TARGET_GCC目标编译器。 CC编译器来编译插件。 CXX编译器来编译插件。 pkg-config查找依赖项。 GMP库。 GCC要求它。
要构建,您将需要 GCC 或 Apple CLang 编译器。 CMake 用于配置管理。 支持 3 种标准 CMake 构建类型: 调试——由项目维护者使用RelWithDebugInfo -- 最常见的发布配置,也提供调试功能发布——仅在需要最高性能时...
安装您只需要安装automake,autoconf,libtool和C编译器(gcc或clang)来编译库,并安装asciidoc和xml来生成文档(可选)。 要安装,只需运行通常的舞蹈, ./configure && make install 。 如果需要,请首先运行./...
过去经过测试的编译器包括所有支持的体系结构中的gcc,clang,cygwin,icc,mingw32,mingw64和suncc。 所有新架构都需要通过集成测试和进行大量的代码审查。 当前为以下目标启用了持续集成: darwin/clang/x86-...
tmux是一个终端多路复用器:它使从单个屏幕创建,访问和控制多个终端成为可能。... 要构建tmux,需要使用C编译器(例如gcc或clang),make,pkg-config和合适的yacc(yacc或bison)。 一些平台为tmux提供二进制软件包。
依存关系C编译器(clang或gcc应该可以) GNU make findutils 的OpenSSL 平台包裹名字自制酒的openssl 德比安libssl开发Fedora / RHEL openssl-开发FreeBSD的openssl-开发如何为GNU / Linux和Homebr进行编译cd ...
FreeBSD GCC 6,7,8,9,10,11 Linux Clang 3.5、3.6、3.7、3.8、3.9、4、5、6、7、8、9、10、11 Linux GCC 4.7、4.8、4.9、5、6、7、8、9、10 macOS Xcode 10.0、10.1、10.2、10.2.1、11.2.1、11.3、11.3.1、...
另一个 Smalltalk VM … 是 Smalltalk ...用法要构建 VM,您需要:Clang 或 GCC 和 Cmake。 # withing VM root directorycmake .make all./st -b smalltalk # compiles Smalltalk kernel and writes to ./snapshot
要构建tmux,需要使用C编译器(例如gcc或clang),make,pkg-config和合适的yacc(yacc或bison)。安装二进制包一些平台为tmux提供了二进制软件包,尽管有时它们已经过时了。 示例列在。从发行包要从发行版tarball...
跨平台渲染库 跨平台,与图形API无关的“自带引擎/框架”样式渲染库。 支持的渲染后端: ...UWP(通用Windows,Xbox One) 支持的编译器: Clang 3.3及以上GCC 5及以上VS2017及以上语言:AppVeyor TravisCI 谁在使用
豆豆简单快速的通用工作队列。 有关网络协议的详细信息,请参阅 protocol.txt。... 当前,beanstalkd已通过GCC和clang进行了测试,但它应可与任何支持C99的编译器一起使用。 使用ronn生成手册。 参见 。子目录a
与Clang和GCC或任何标准C ++ 11实现兼容。 100%免费且不受阻碍的软件,可在任何情况下以任何目的使用。设计原则提供零成本的抽象包装文件描述符。 确保使用O_CLOEXEC打开O_CLOEXEC 。 缓解POSIX接口带来的各种竞争...
V文件 介绍 V是设计用于构建可持续软件的静态类型的已编译程序语言。 它类似于Go,其设计也受到Oberon,Rust,Swift,Kotlin和Python的影响。...您需要git,以及像tcc,gcc,clangou msvc这样的C编译器: git
(GCC/CLANG/MinGW/MSC) 小吃和啤酒。 Ultimate++终端widget源码安装方式有以下三种: 该包可通过 U++ 的第 3 方源包管理系统 立即获得。 这是最简单和推荐的方法。 (需要 U++ 版本 > 2020.2,或 nighty 版本。) ...