LLVM 工具链分类整理

一览

1. 编译与编译器相关工具
功能工具
前端工具clang, clang++, clang-cl, flang, flang-new
后端工具llc, llvm-as, llvm-dis, llvm-objcopy, llvm-objdump, llvm-link, llvm-extract, llvm-isel-fuzzer
链接器ld.lld, lld-link, wasm-ld, nvptx-arch
二进制分析llvm-ar, llvm-ranlib, llvm-nm, llvm-size, llvm-strip
2. 测试与调试相关工具
功能工具
调试工具llvm-dwarfdump, llvm-symbolizer, llvm-debuginfo-analyzer, llvm-debuginfod-find
测试工具FileCheck, not, scan-build, scan-build-py, scan-view
性能测试clang-check, opt, llvm-profdata, llvm-cov, llvm-mca, llvm-exegesis
3. 专用工具
功能工具
机器学习与优化mlir-opt, mlir-tblgen, mlir-reduce, mlir-lsp-server
代码生成器tblgen-lsp-server, clang-tblgen, llvm-tblgen
Fortran 相关工具fir-opt, f18-parse-demo
4. 测试支持与开发辅助工具
功能工具
测试生成器bugpoint, clang-fuzzer-dictionary
依赖分析与构建辅助clang-scan-deps, intercept-build, analyze-build
5. 系统和库工具
功能工具
库工具llvm-lib, llvm-libtool-darwin, llvm-addr2line
资源工具llvm-config, llvm-cat, llvm-readelf, llvm-readobj
6. 辅助与实验性工具
功能工具
工具生成器clang-import-test, clang-installapi, llvm-reduce
分析器与格式化工具clang-format, clang-diff, diagtool

常用工具链

  • clang
  • clang++
  • clang-cl→模拟 Microsoft 的 Visual C++ 编译器,用于在 Windows 上兼容 MSVC 工具链
  • llc
  • lld
  • ld. lld
  • llvm-as
  • llvm-dis
  • llvm-link
  • opt

    次常见工具链

  • llvm-ar
  • llvm-nm
  • llvm-size
  • llvm-objdump
  • llvm-strip

    调试与分析测试工具

  • llvm-symbolizer→将堆栈跟踪中的地址转换为函数名、文件名和行号,用于调试
  • llvm-dwarfdump→检查 DWARF 调试信息
  • llvm-xray→用于代码分析和性能优化的工具,通过插桩生成跟踪数据
  • llvm-mca→模拟机器代码执行,分析性能瓶颈
  • llvm-profdata→用于分析和处理性能分析数据文件(Profile Data)
  • llvm-cov→用于生成代码覆盖率报告
  • llvm-exegesis→生成性能基准,用于分析 CPU 指令的延迟和吞吐量
  • llvm-lit→LLVM 的测试框架,执行单元测试和回归测试

    其他

  • clang-tidy→用于静态分析和代码风格检查
  • scan-build→通过 Clang 对 C/C++ 项目进行静态分析,集成编译过程
  • clang-format→用于格式化 C/C++/Objective-C 源代码
  • llvm-config→==提供关于 LLVM 安装的信息,例如版本号、库路径、编译标志==等
  • llvm-cat→用于简单地连接多个 LLVM IR 文件
  • clang-scan-deps→分析和跟踪文件依赖
    个人觉得眼前一亮的工具链
  • obj2yaml 与yaml2obj:将 ELF/COFF/Mach-O 等对象文件转为 YAML 格式以便阅读或测试。反之可以方便快捷编写. o 文件
  • llvm-opt-fuzzer:Fuzz 测试 LLVM 优化器中的 Pass 管道,发现崩溃或非预期行为
  • llvm-isel-fuzzer:Fuzz 测试 LLVM 后端的指令选择器(Instruction Selection),用于发现代码生成崩溃或错误。
  • llvm-dwp:合并多个 DWARF .dwo 文件成一个 .dwp 文件,供调试用(DWARF 5)
  • llvm-extract:从 LLVM bitcode 中提取单个函数或全局变量,生成最小测试样例
  • llvm-opt-report:显示编译器优化信息(如矢量化、循环展开)的人类可读报告。
  • llvm-undname:将 MSVC 风格的 C++ 符号名称(mangled)还原成人类可读形式(demangle)。
  • llvm-pdbutil:分析和提取 Microsoft PDB(调试信息)文件中的内容。
  • llvm-ml:LLVM 版 MASM 汇编器,兼容 MSVC 的 .asm 文件语法。
  • llvm-mt:LLVM 版 mt.exe 工具,用于操作 Windows 清单(manifest)文件。
  • llvm-ifs:生成和处理 ELF 接口描述文件(Interface Stub),支持模块化构建与 ABI 检查。
  • llvm-bcanaylzer:分析 LLVM Bitcode 文件中的字节码结构和编码细节(低层调试专用)。