Clang编译平台优势分析

时间:2022-09-25 08:12:22

Clang编译平台优势分析

摘要:当前用户对软件产品在功能上、体验上的需求多种多样,这就对软件开发和维护的时效性要求越来越高。作为软件开发中使用的主流语言――C家族的编程语言,若要在激烈的竞争中保持住自己的主流地位,其支撑平台和工具也需要不断寻求快速、轻量、易于剪裁等方面的突破。Clang源自于伊利诺伊大学的LLVM研究项目,并有苹果公司的开发支持,是一款革新性的c家族语言编译器。Clang不仅在编译速度上普遍比传统的编译器快,并且其基于库的体系结构,使得Clang易于剪裁、体量轻盈,同时,还具有强大的动、静态分析功能,不到十年,已经得到了软件开发和维护专业人员的广泛认可。

关键词:软件开发;编译器;语法分析;抽象语法树

0引言

Clang是LLVM项目的一个子项目。LLVM的命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写,但是其工作却并未直接针对传统的虚拟机,而是旨在提供一种既支持静态编译又支持动态编译,同时也不受编程语言限定制约的编译策略。随着这个项目的不断发展,LLVM已经无法完全指征与代表这一项目了,只是这种叫法一直延续下来。目前,LLVM包含了很多的子项目,其中最具盛名的就是Clang。

Clang最主要的追求目的即是快速编译。由于GNU编译器套装(GCC)系统庞大,而且苹果公司(Apple)主要使用的Obiecfive-C在GCC中优先级较低,同时GCC作为一个纯粹的编译系统,与集成开发环境(Integrated Development Environment,IDE)的配合也未可堪称优良,因此Apple决定从零开始写C的前端,也就是基于LLVM的Clang了。在提供快速的编译工作基础上,各种源代码级工具的开发将得到极大的益处。从源上说,Clang结构更简单,只需要实现词法和语法分析,代码优化和机器代码的生成工作均由LLVM执行完成。所以比起全部集成包揽的GCC来说,Clang可以更为专注地研发和推进一件事情直至成功。这种结构也使Clang可以独立引用并运行在其他的程序里。比如XavierDeguillard的vim插件Clang_complete就是利用Clang进行语法分析后给出精确的自动补全和语法错误提示的。

1Clang的特性

提供快速的编译则编译平台本身不能是笨重的,因此Clang的开发选用了一种基于库(library-based)的体系结构,这即使得在不同的应用需求下,开发人员可以随意裁剪使用相应的库,从而灵活搭建轻量级的、有伸缩性的工具。具体而言,Clang的特性有6个方面:可伸缩性好、支持多样性的应用,快速编译、低内存占用,诊断信息表达能力强,与IDE结合紧密,与GCC兼容,以及使用BSD开源许可。下面将分别对其展开阐释与概述。

1)可伸缩性好、支持多样性应用。Clang的核心设计概念是其使用基于库的体系结构。前端的各个部分被分割到不同的库中,可以根据不同的使用场景进行适配组合。当前Clang被分为10个库(见表1)和1个Clang驱动程序。Clang的各个库之间功能独立、接口清晰,如开发一个预处理器,t只需要组装libbasic库和liblex库。

上一篇:齿轮高速干切加工的滚刀控制优化仿真 下一篇:鸟类给输电线带来的危害