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

相关推荐
别动我齐刘海6 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
傻啦嘿哟6 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
码匠许师傅7 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试
闻道且行之7 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
莫浅子8 小时前
day01-USB架构与枚举
c++·单片机·嵌入式驱动
小欣加油9 小时前
leetcode3069 将元素分配到两个数组中I
数据结构·c++·算法·leetcode·职场和发展
不会代码的小猴9 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
沫璃染墨9 小时前
《Qt从零入门系列(六):信号与槽进阶——从多种连接方式到Lambda表达式》
开发语言·c++·qt·代码规范·设计规范·qt5
小小龙学IT10 小时前
ZeroMQ(libzmq)开源消息库深度解析:brokerless 时代的轻量消息内核
c++·开源
Benny_Tang11 小时前
题解:P10230 [COCI 2023/2024 #4] Lepeze
c++·算法