llvm介绍

1)总体介绍

LLVM是一个编译器基础设施项目,或者说是一个完整的"编译器生态",它的核心设计就是一套通用的中间表示(IR,Intermediate Representation),并围绕它构建了一系列用于处理、优化和转换代码的库与工具。

2)组成部分

前端 (Frontend):好比是针对不同车型(编程语言)的"定制零件机床"。比如,Clang 负责处理 C/C++,Flang 负责处理 Fortran。它们共同作用是把高级语言解析成一种统一的、标准化的零部件(LLVM IR)。

优化器 (Optimizer):相当于工厂里的"通用加工中心"。它与具体的车型或零件无关,只负责对收到的标准化零部件进行各种打磨、优化和重构,让它变得更高效、更轻便。

后端 (Backend):等同于"最终组装线"。它会接收优化好的零部件,并根据最终要交付的"客户"需求------比如是 x86 架构的 PC、ARM 架构的手机还是 PowerPC 架构的服务器,将其组装成对应的可执行文件或机器码。

3)llvm下载文件介绍

llvm:对应了总体项目,对IR的优化、根据架构组装可执行文件,在这个文件夹中。

Clang:C编译器前端,将源码编译为IR,Clang只负责发起链接,会调用外部链接器。

Compiler-RT:Clang 的 Sanitizer 功能 依赖生态中的 compiler-rt 组件,对应-fsanitize=...选项。

libc++:对应gcc中的libstdc++,是llvm生态对于C++标准库的实现,RedHat、CentOS等系统默认使用libstdc++,MacOS默认使用libc++(下载时的名称是libcxx)。

4)Clang的内置头文件

位置在lib/clang/version_xxx中。在 Clang 的官方文档中特别提到,内置头文件的位置是相对于 Clang 二进制文件路径计算的。因此,如果你在安装后移动了 clang 或 clang++ 二进制文件的位置,必须确保相应的内置头文件目录也一并移动,否则编译器会因找不到 stddef.h 等基础头文件而报错。使用 clang++ -print-resource-dir 可以查询这个路径。

相关推荐
888CC++9 小时前
C++ 快速学习指南:从入门到进阶的实战路线
开发语言·c++
小小晓.10 小时前
C++记:函数
开发语言·c++·算法
驱动小百科11 小时前
Windows运行库合集下载 VC++、DirectX、.NET运行库安装教程
c++·windows·.net·windows运行库合集下载·windows运行库安装
charlie11451419111 小时前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目
2301_7779983414 小时前
Linux线程同步与互斥(三):信号量与环形队列实现生产者消费者模型
linux·c语言·c++
啦啦啦啦啦zzzz14 小时前
设计模式:单例模式和工厂模式
c++·单例模式·设计模式·工厂模式
Henry Zhu12314 小时前
C++ 动态多态详解
c++
此生决int14 小时前
深入理解C++系列(06)——模版初阶与STL
开发语言·c++
c2385615 小时前
《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》
c语言·c++·算法
noipp15 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu