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