欢迎访问个人网络日志🌹🌹知行空间🌹🌹
LLVM
介绍
和GCC
一样,LLVM
也是编译器,GCC
是由GNU
开发的编程语言编译器,是GNU
项目的关键部分,也是自由的类Unix
及苹果电脑Mac OS X
操作系统的标准编译器。
LLVM
本身不是缩略词,项目的名称就叫这个。该项目于2000年由美国伊利诺伊大学 University of Illinois
厄巴纳-香槟分校的Vikram Adve
和Chris Lattner
发起的,他们的目标在于提供一种基于静态单赋值SSA
现代编译策略能够支持任意编程语言的静态和动态编译的工具。LLVM首次发布是在2003年。从那时起,LLVM 已经发展成为一个由许多子项目组成的项目集,其中许多子项目广泛应用于商业软件,开源软件和学术研究中。LLVM
的开源协议为:“Apache 2.0 License with LLVM exceptions”
LLVM
包含的主要子工程有:
-
LLVM Core Libraries
,LLVM核心库提供了现代的独立于源码和目标的优化器,同时支持生成许多流行CPU的代码,这些库围绕一个明确的中间代码表示来构建,因此使用LLVM
可以轻松地创建新的语言。 -
Clang
,Clang
是LLVM
原生的,主要用于C
,C++
和Objective-C
的编译器。Clang Static Analyzer
和clang-tidy
是Clang
前端工具,用于静态代码分析,可以自动的检测定位代码中的bug
。 -
LLDB
,LLDB是一个由Clang
和LLVM
支持的用于调试C
,C++
,Objective-C
和Objective-C++
程序的交互式调试器。 -
Polly
,Pol