ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

仓颉 LLVM 项目目录地图:10 分钟看懂 llvm-project 的 20 个核心模块

2026/10/8 7:20:25 拓冰建站 浏览量
仓颉 LLVM 项目目录地图:10 分钟看懂 llvm-project 的 20 个核心模块 仓颉 LLVM 项目目录地图10 分钟看懂 llvm-project 的 20 个核心模块【免费下载链接】llvm-projectLLVM 项目是一个模块化、可复用的编译器及工具链技术的集合。此fork用于添加仓颉编译器的功能并支持仓颉编译器项目。项目地址: https://gitcode.com/Cangjie/llvm-project仓颉 LLVM 项目Cangjie/llvm-project是一个模块化、可复用的编译器及工具链技术集合这个 Fork 在此基础上添加了仓颉编译器功能支持仓颉Cangjie语言编译器的开发。它包含 20 余个核心模块从 C/C 前端 Clang、汇编器链接器 LLD到调试器 LLDB 和 C 标准库构成完整工具链。本文带你 10 分钟看懂每个目录的用途成为读懂 llvm-project 目录结构的地图导航员。 提示本文面向新手不要求任何编译器背景只需认识目录、文件、功能三个概念即可。一分钟建立全局印象编译器工具链长什么样在钻进目录之前先理解这张图源码如何一步步变成可执行程序。FlangFortran 编译器前端驱动的流程正是 llvm-project 的典型缩影——前端解析源码MLIR/LLVM 做中间表示变换与优化最后生成目标文件并链接。理解了这条流水线下面 20 个目录就都有了岗位。20 个核心模块速查表llvm-project 目录结构一览#目录一句话职责1llvm/核心中间表示、优化器、代码生成、汇编器2clang/C、C、Objective-C 等语言的前端编译器3clang-tools-extra/clangd、clang-tidy 等静态检查与 IDE 工具4flang/Fortran 前端基于 MLIR 构建5mlir/多层级中间表示基础设施Flang 的地基6lld/新一代链接器ELF/COFF/MachO/Wasm7lldb/调试器本 Fork 在其上构建了仓颉调试器 cjdb8libcxx/C 标准库实现9libcxxabi/C 异常处理与类型信息运行时10libunwind/栈展开stack unwinding库11compiler-rt/编译器运行时sanitizer、原子操作等12libc/新的 C 标准库基于 C13libclc/OpenCL C 标准库14openmp/OpenMP 并行编程运行时15polly/多面体Polyhedral循环优化插件16pstl/C 并行标准模板库17bolt/二进制优化器直接优化编译后的机器码18llvm-libgcc/链接 libgcc 所需的兼容层19cross-project-tests/跨子项目集成测试20utils/ 等辅助目录构建工具、第三方依赖如 benchmark核心引擎llvm/ 目录是什么llvm/是整个项目的心脏包含处理中间表示IR的全部工具、库和头文件——汇编器、反汇编器、位码分析器与优化器都在这里。目录骨架非常规整新手记这 4 个就够用了llvm/lib/各组件核心实现Analysis 分析、CodeGen 代码生成、Transforms 优化等llvm/include/llvm/对外公共头文件llvm/tools/llvm-as、llvm-link、opt 等命令行工具llvm/test/回归测试数量最大的目录之一语言前端clang/ 与 flang/ 如何分工clang/编译 C、C、Objective-C 等类 C 语言的主力前端把源码变成 LLVM 位码。clang/docs/DriverArchitecture.png 展示了其 Driver 如何解析参数、绑定工具链并翻译执行。flang/Fortran 前端它不直接对接 LLVM而是借助 mlir/ 的 FIR 方言再经 MLIR→LLVM IR 翻译下沉是MLIR 化前端的代表。开发者工具箱clang-tools-extra/ 里有什么这个目录聚合了日常开发最实用的工具clangd轻量级 C 语言服务器VSCode 里补全、跳转都靠它clang-tidy风格与静态分析检查器模块化组织bugprone/、performance/、modernize/等子目录各代表一类检查规则include-cleaner自动清理无用 #include仓颉特色lldb/ 中的仓颉调试器 cjdb ⭐这是本 Fork 相对上游 LLVM 的最大亮点。lldb/ 原本是通用调试器本项目基于 llvm15.0.4 适配演进出了cjdb——一款命令行仓颉程序调试工具。从架构图可以看到LLDB 命令行、IDE、Python 模块三种入口统一接入 Debugger API表达式解析层明确扩展了Clang、Cangjie双解析器平台层还支持 OHOS 等系统。关键源码位置中文说明与构建指南lldb/README_zh.md仓颉表达式解析插件lldb/source/Plugins/ExpressionParser/Cangjie/官方架构图lldb/docs/CJDB_Architecture_Diagram.png构建 cjdb 需配合仓颉编译器工程build.py build -t release --build-cjdb详见 lldb 中文 README 中的编译构建章节。运行时与标准库代码跑起来靠它们模块作用新手理解libcxx/ libcxxabi/C 标准库与异常运行时vector、string都来自这里libunwind/栈展开库异常抛出/捕获时回溯调用栈的引擎compiler-rt/sanitizerASan/MSan、原子内建实现帮助捕获内存错误的安全网libc/基于 C 实现的新 C 标准库面向嵌入式与 WASI 场景libclc/OpenCL C 标准库GPU 计算库openmp/OpenMP 并行运行时#pragma omp指令的执行引擎pstl/C 并行 STLstd::execution并行算法优化器家族polly/、bolt/ 让代码更快polly/多面体优化器插件把循环变换交换、分块、向量化交给数学模型自动求解。bolt/Post-Link 二进制优化器直接对编译好的机器码做重排与热区布局无需源码。mlir/ 与 flang/新一代中间表示框架Flang 前端的地基也是未来新语言接入 LLVM 的推荐路径。动手 10 分钟如何获取并浏览源码如果只读浏览clone 后可直接在代码托管平台的网页上查看本地获取git clone https://gitcode.com/Cangjie/llvm-project三条看目录小技巧先读 READMEREADME.md 概述了各组件关系与构建入口看 CMakeLists.txt每个模块根目录的 CMakeLists.txt 列出其子模块如 llvm/CMakeLists.txt、lldb/CMakeLists.txt看 docs/ 与 test/文档与测试用例是理解模块意图最快的材料如 llvm/docs/、clang/docs/总结20 个模块的角色分工核心引擎llvm、mlir —— 编译的中枢语言前端clang、flang clang-tools-extra 提供开发体验后端与链接lld、bolt调试lldb含仓颉 cjdb 扩展 ⭐运行时/标准库libcxx、libcxxabi、libunwind、compiler-rt、libc、libclc、openmp、pstl辅助设施polly、llvm-libgcc、cross-project-tests、utils、runtimes掌握这张地图后无论你想阅读 Clang 的 AST 处理还是深入 cjdb 的仓颉表达式解析都能在 10 分钟内定位到正确的目录。祝你在 llvm-project 的源码之旅中收获满满【免费下载链接】llvm-projectLLVM 项目是一个模块化、可复用的编译器及工具链技术的集合。此fork用于添加仓颉编译器的功能并支持仓颉编译器项目。项目地址: https://gitcode.com/Cangjie/llvm-project创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考