一、Clang/LLVM简介
LLVM项目是模块化、可重用的编译器和工具链技术的集合,常特指其关键子项目之一的LLVM内核库——编译器基础库,支持许多CPU和目标文件格式。
Clang是一个基于LLVM内核库的编译器,可编译C语言系列(C,C ++,Objective C / C ++,OpenCL,CUDA和RenderScript),是LLVM的一个子项目。更进一步来说,Clang只是一个编译器前端,其将上述的类C语言编译成一种“汇编语言(中间语言-IR)”。接着,通过LLVM作为后端,将这种“汇编语言”编译成针对不同机器的二进制机器语言。可广泛应用于Windows、Linux、macOS、iOS、Android、ARM-Linux等平台。
二、Clang/LLVM的特性
Clang/LLVM是在类BSD许可证下发布的,可以比较自由地在商业软件中使用。
与Clang诞生之前广泛应用的GCC相比,Clang具有以下优点:
- 编译速度块,内存占用小
- 诊断信息可读性强
- 模块化设计,易于扩展增强,易于 IDE 集成及其他用途的重用
- 与GCC、MSVC兼容
三、Clang使用
Clang可运行在Windows、Linux、macOS系统下。以Ubuntu为例,可在官网下载预编译的安装包,也可运行sudo apt install clang命令安装。
写好一个C语言的Hello World之后,并保存为hello.c:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("Hello world!\n");
return 0;
}
运行clang hello.c,就可以编译出a.out文件。运行a.out就可以在终端显示出“Hello world!”了。如下图所示: