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 可以查询这个路径。

相关推荐
clint4563 天前
C++进阶(1)——前景提要
c++
夜悊3 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴3 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0013 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
玖玥拾4 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
один but you4 天前
constexpr函数
c++
凡人叶枫4 天前
Effective C++ 条款41:了解隐式接口和编译期多态
java·开发语言·c++·effective c++
凡人叶枫4 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
小胖xiaopangss4 天前
BRpc使用
c++·rpc
-森屿安年-4 天前
63. 不同路径 II
c++·算法·动态规划