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

相关推荐
吴可可1231 小时前
LibNester核心是C++实现
c++
Brilliantwxx2 小时前
【C++】 深入理解红黑树:实现与原理全解
数据结构·c++·笔记·算法·青少年编程·红黑树
莫等闲-3 小时前
leetcode42. 接雨水 leetcode84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
爱吃生蚝的于勒3 小时前
QT开发第二章——信号和槽
c语言·开发语言·c++·qt
思麟呀3 小时前
C++工业级日志项目(八)最终上层接口
开发语言·c++
六bring个六3 小时前
c/c++面试踩坑笔记
c语言·数据结构·c++
石山代码3 小时前
如何在 C++ 中实现多态?
开发语言·c++
阿方.9183 小时前
C++ std::function 超全精讲 | 原理语法、适配对象、递归实现、回调场景、面试考点、易错坑点
开发语言·c++·bind·function
不会C语言的男孩3 小时前
C++ Primer Plus 第12章:类和动态内存分配
开发语言·c++