开源推荐
morning
GitHub 热门项目: claudes-c-compiler
2026-05-26
1 阅读
GitHub Trending
GitHub 项目:claudes-c-compiler
仓库地址:https://github.com/anthropics/claudes-c-compiler
星级:2691 | 作者:人类学
项目描述:Claude Opus 4.6 用 Rust 编写了一个无依赖的 C 编译器,后端针对 x86(64 位和 32 位)、ARM 和 RISC-V,能够编译启动 Linux 内核。
===================================================
自述文件内容:
# CCC — 克劳德的 C 编译器
完全用 Rust 从头开始编写的 C 编译器,针对 x86-64、i686、
AArch64 和 RISC-V 64。零特定于编译器的依赖性 - 前端,
基于 SSA 的 IR、优化器、代码生成器、窥孔优化器、汇编器、
链接器和 DWARF 调试信息生成都是从头开始实现的。
Claude 的 C 编译器无需任何外部工具链即可生成 ELF 可执行文件。
> 注意:除了这一段是由人编写的之外,此存储库中 100% 的代码和文档都是由 Claude Opus 4.6 编写的。人类通过编写 Claude 被要求通过的测试用例来指导这一过程,但从未与 Claude 进行交互式结对编程来调试或提供有关代码质量的反馈。因此,我不建议您使用此代码!其正确性均未得到验证。 Claude 专门在 Linux 主机上写了这篇文章;它可能无法在 MacOS/Windows 上运行——我和 Claude 都没有尝试过。这些文档可能是错误的并且做出了错误的声明。有关更多详细信息,请参阅[我们的博客文章](https://anthropic.com/engineering/building-c-compiler)。
## 先决条件
- **Rust**(稳定,2021 版)— 通过 [rustup](https://rustup.rs/) 安装
- **Linux 主机** — 编译器以 Linux ELF 可执行文件为目标并依赖于
正在安装 Linux 系统头文件/C 运行时库(glibc 或 musl)
在主机上
- 对于交叉编译目标(ARM、RISC-V、i686),相应的
应安装交叉编译 sysroots(例如,
`aarch64-linux-gnu-gcc`、`riscv64-linux-gnu-gcc`)
## 建筑
````bash
货物构建--发布
````
这会在 `target/release/` 中生成五个二进制文件,它们全部编译自相同的文件
来源。目标架构在运行时通过二进制名称选择:
|二进制|目标|
|--------|--------|
| `ccc` | x86-64(默认)|
| `ccc-x86` | x86-64 |
| `ccc-arm` | AArch64 |
| `ccc-riscv` | RISC-V 64 |
| `ccc-i686` | i686(32 位 x86)|
## 快速入门
编译并运行一个简单的 C 程序:
````bash
# 编写测试程序
猫 > hello.c << 'EOF'
#include
int 主函数(无效){
printf("来自 CCC 的问候!\n");
返回0;
}
EOF
# 编译并运行(x86-64)
./target/release/ccc -o 你好你好.c
./你好
# 交叉编译AArch64并在QEMU下运行
./target/release/ccc-arm -o hello-arm hello.c
qemu-aarch64 -L /usr/aarch64-linux-gnu ./hello-arm
````
CCC 可作为 GCC 的直接替代品。将您的构建系统指向它:
````bash
# 使用 make 构建项目
使 CC=/path/to/ccc-x86
# 使用 CMake 构建项目
cmake -DCMAKE_C_COMPILER=/path/to/ccc-x86 ..
# 使用配置脚本构建项目
./configure CC=/path/to/ccc-x86
````
## 用法
````bash
# 编译并链接
ccc -o 输出输入.c # x86-64
ccc-arm -o 输出 input.c # AArch64
ccc-riscv -o 输出输入.c # RISC-V 64
ccc-i686 -o 输出输入.c # i686
# GCC 兼容标志
ccc -S input.c # 发出程序集
ccc -c input.c # Co