LLVM的编译链工具

发布时间:2024年01月19日

1. LLVM简介

通常提到LLVM和Clang,其实会有多个概念,不同的概念需要在上下文中去分辨。从官网文档中翻译出来是这样的:

1.1 LLVM

  • LLVM项目或基础架构:这是对整个LLVM编译器框架的程序,包括了前端、优化器、后端、汇编器、链接器,以及libc++、JIT等。上下文如:“LLVM项目由以下几个模块组成”。
  • 基于LLVM开发的编译器:这是指一部分或全部基于LLVM项目开发的编译器软件,软件可能基于LLVM的前端或后端来实现。上下文如:“我用LLVM将C语言编译到MIPS平台”。
  • LLVM库:LLVM项目由库代码和一些工具组成,有时会指代LLVM库内容。上下文如:“我的项目使用了LLVM的即时编译框架”(JIT是其中一个库)。
  • LLVM核心:在IR和后端算法上的内容,就是LLVM核心,也就是通常Clang/LLVM中的LLVM。上下文如:“LLVM和Clang是两个项目”。
  • LLVM IR:有些时候也会指代其中间表示。上下文如:“Clang是一个前端,能将源代码翻译成LLVM”。

1.2 Clang

通常我们在命令行上调用的clang工具,是Clang驱动程序,因为LLVM本质上只是一个编译器框架,所以需要一个驱动程序把整个编译器的功能串起来,clang能够监控整个编译器的流程,即能够调用到Clang和LLVM的各种库,最终实现编译的功能。

BTW,其实gcc也是驱动程序,由它将ccasld等程序驱动起来。</

文章来源:https://blog.csdn.net/panpan_jiang1/article/details/135586613
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。