llvm

llvm-project

llvm

LLVM Project 是一套模块化、可复用的编译器与工具链技术合集,包含 LLVM 核心、Clang 前端、LLD 链接器、libc++ 标准库与 MLIR 等组件。

llvmorg-23.1.4
发布于
8 天前
41,226
星标
1,511,768
下载
同步于
15 小时前

最新版本

llvmorg-23.1.42026年10月20日 21:03
下载慢?可在上方随时切换镜像源

项目说明

项目概述

LLVM Project 由 LLVM 基金会社区维护,是现代编译基础设施事实上的基石:苹果、Google 到 AMD 的生产编译器都构建在它之上。这个 monorepo 收纳了全部子项目源码——中间表示与优化核心 LLVM、C 家族前端 Clang、C++ 标准库 libc++、快速链接器 LLD、调试器 LLDB、多层级 IR 框架 MLIR、Fortran 前端 Flang、OpenMP 运行时与多目标优化器 Polly 等。

项目 内容
形态 编译器与工具链组件合集(monorepo)
覆盖语言 C / C++ / Objective-C / Objective-C++ 经 Clang 编译
许可 Apache 2.0(含 LLVM 例外条款),见 LICENSE.TXT
主目录 llvm / clang / lld / lldb / mlir / flang / libcxx 等
社区 Discourse 论坛、Discord、Office Hours

把「源代码变成高效机器码」这件事拆成一个个可复用的模块。

核心组件

  • LLVM 核心:中间表示(bitcode)、优化器与代码生成,附带汇编器、反汇编器与 bitcode 分析工具
  • Clang:C、C++、Objective-C、Objective-C++ 前端,先编译到 LLVM bitcode 再生成目标文件,以诊断信息与标准符合度著称
  • LLD:内置于 LLVM 的快速链接器,可替代 GNU ld 等传统链接器
  • libc++ / libc++abi:高性能 C++ 标准库及其运行时
  • LLDB:与 Clang 共享表达式解析的调试器
  • MLIR:多层中间表示框架,AI 编译器与领域 DSL 的地基
  • 运行时家族:compiler-rt、libunwind、openmp、libc 等执行环境组件

集成方式

  • 作为工具链使用:Clang 加 LLD 可直接替换现有 C/C++ 构建的编译器与链接器,cmake -DCMAKE_C_COMPILER=clang 即可切入
  • 作为库链接:LLVM 以库族发布,llvm-config --cxxflags --libs 输出对接所需参数,ORC JIT 可把 IR 直接在内存里跑起来
  • 作为平台扩展:MLIR 自定义方言、Clang 插件与 pass 插件是常见的三方扩展点

获取与构建

  1. 执行 git clone https://github.com/llvm/llvm-project(仓库体积巨大,建议浅克隆)
  2. 构建:cmake -G Ninja -S llvm -B build -DCMAKE_BUILD_TYPE=Release && ninja -C build
  3. 入门与贡献指南见 llvm.org/docs 的 Getting Started 与 Contributing 页面

适用场景

  • 语言与编译器研究者
  • 需要自研 DSL 或 AI 编译栈的工程团队
  • 追求链接速度与优化质量的 C/C++ 项目
  • 工具链发行版与交叉编译环境维护者

环境要求

项目 要求
构建系统 CMake,配 Ninja 或 Make
语言标准 C++17
参考 具体编译器与版本要求见官方 Getting Started

注意事项

  • 仓库极大:完整克隆超过 4 GB,建议 --depth 1 浅克隆或按需 sparse-checkout
  • 全量构建昂贵:完整构建 LLVM 加 Clang 需要数十分钟到数小时,日常开发可只启用 LLVM_ENABLE_PROJECTS=clang
  • 发版节奏:每年发布两个大版本

历史版本

排序