模块化的编译器与工具链技术集合,包含 LLVM 核心、Clang 前端、libc++ 标准库和 LLD 链接器。
root-project/cling
基于 Clang 和 LLVM 构建的交互式 C++ 解释器,提供逐行执行代码的 REPL 环境。
- Star
- 4,201
- Fork
- 313
- 未关闭 Issue
- 138
- 最近提交
- 7天前
这是什么?
Cling 是一个交互式 C++ 解释器,实现了读取-求值-输出循环(REPL),让 C++ 代码无需完整的编译、链接、运行流程即可逐步输入和执行。它以 LLVM 和 Clang 的扩展形式实现,并沿用 Clang 的编译器诊断信息。
项目既可以基于已有的 LLVM/Clang 独立构建,也可以与专用 llvm-project 分支中的 LLVM 一起构建。运行 cling 可执行文件后,可以直接输入 C++ 语句和 include 指令,并使用 .help 等点号开头的命令。
通过 CLING_DEBUG 和 CLING_PROFILE 环境变量,Cling 可以对解释执行(JIT 编译)的代码进行调试和性能分析。构建完成后,还可以安装其 Jupyter 内核,在 notebook 中使用 C++。
核心功能
- 01交互式 REPL,可逐条执行 C++ 语句和声明。
- 02基于 Clang 和 LLVM 构建,沿用 Clang 的编译器诊断信息。
- 03支持 #include 指令,可在命令行中交互式运行代码。
- 04通过环境变量为 JIT 编译的代码生成调试符号并进行 perf 性能分析。
- 05提供 Jupyter 内核,可在 notebook 中使用。
适用场景
- 无需编写完整程序,即可快速测试 C++ 代码片段或库的 API。
- 交互式地探索头文件和 C++ 语言行为。
- 在 Jupyter notebook 中使用 C++ 进行数据探索。
- 调试或分析运行时经 JIT 编译的代码。
标签
常见问题
- cling 是什么?
- 基于 Clang 和 LLVM 构建的交互式 C++ 解释器,提供逐行执行代码的 REPL 环境。 Cling 是一个交互式 C++ 解释器,实现了读取-求值-输出循环(REPL),让 C++ 代码无需完整的编译、链接、运行流程即可逐步输入和执行。它以 LLVM 和 Clang 的扩展形式实现,并沿用 Clang 的编译器诊断信息。
- cling 可以免费使用吗?用的什么许可证?
- cling 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- cling 还在维护吗?
- 活跃维护中。cling 最近一次提交是在 2026年10月15日。
- cling 适合用来做什么?
- 无需编写完整程序,即可快速测试 C++ 代码片段或库的 API。 交互式地探索头文件和 C++ 语言行为。 在 Jupyter notebook 中使用 C++ 进行数据探索。 调试或分析运行时经 JIT 编译的代码。
- 在哪里获取 cling?
- 源代码和安装说明在 GitHub 上:https://github.com/root-project/cling
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
4.1万1.9万LLVMOther更新于 6小时前
面向 Rust 的交互式求值环境,提供 Jupyter 内核和命令行 REPL,可逐步运行 Rust 代码。
6504241RustOther更新于 昨天
将 C 和 C++ 代码编译为 WebAssembly,使其可在浏览器、Node.js 等环境运行的编译工具链。
2.8万3572C++Other更新于 8小时前
基于 LLVM 的 Go 编译器,面向微控制器、WebAssembly 和命令行工具。
1.8万1093GoOther更新于 13小时前
用纯 Go 编写的 ECMAScript 5.1 JavaScript 引擎,可将 JS 执行嵌入 Go 程序。
7155497GoMIT更新于 16小时前