ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

一份源码四个架构:claudes-c-compiler x86-64/ARM64/RISC-V/i686交叉编译实战指南

一份源码四个架构:claudes-c-compiler x86-64/ARM64/RISC-V/i686交叉编译实战指南 一份源码四个架构claudes-c-compiler x86-64/ARM64/RISC-V/i686交叉编译实战指南【免费下载链接】claudes-c-compilerClaude Opus 4.6 wrote a dependency-free C compiler in Rust, with backends targeting x86 (64- and 32-bit), ARM, and RISC-V, capable of compiling a booting Linux kernel.项目地址: https://gitcode.com/gh_mirrors/cl/claudes-c-compilerclaudes-c-compilerCCCClaudes C Compiler是一个用 Rust 从零实现的 C 语言编译器一次构建即可同时支持x86-64、ARM64、RISC-V 64、i686四大架构内置汇编器与链接器无需任何外部工具链甚至能直接编译可启动的 Linux 内核。本文将带你完成从安装构建到四架构交叉编译的完整流程。为什么选 claudes-c-compiler四大交叉编译优势与传统工具链相比CCC 有几个对新手和工程师都非常友好的特点一次构建四个后端cargo build一次产出 5 个二进制文件靠二进制名选择目标架构零外部依赖前端、SSA 中间表示、优化器、代码生成、汇编器、链接器、DWARF 调试信息全部自研GCC 兼容接受绝大多数 GCC 参数-O2、-g、-D、-I、-fPIC -shared等可无缝替换构建系统中的 GCC✅实战验证PostgreSQL、SQLite、FFmpeg、Busybox、CPython、QEMU 等 150 项目成功编译交叉编译前准备安装环境环境要求清单依赖说明Ruststable2021 edition通过 rustup 安装Linux 主机编译器目标是 Linux ELF依赖宿主机的 glibc 或 musl交叉 sysroot目标架构的头文件/运行时库如aarch64-linux-gnu-gcc、riscv64-linux-gnu-gcc配套 sysrootQEMU可选用于运行交叉编译出来的可执行文件 提示交叉目标只需 sysroot头文件 库不需要安装完整的交叉 GCC 工具链因为汇编和链接都由 CCC 内置完成。一键获取源码git clone https://gitcode.com/gh_mirrors/cl/claudes-c-compiler cd claudes-c-compiler构建编译器cargo 构建出 5 个架构二进制构建步骤cargo build --release构建完成后target/release/目录下会出现 5 个二进制全部来自同一份源码运行时按二进制名选择目标架构二进制目标架构cccx86-64默认ccc-x86x86-64ccc-armARM64AArch64ccc-riscvRISC-V 64ccc-i686i68632 位 x86验证内置工具链是否生效执行ccc --version若看到Backend: standalone说明正在使用内置汇编器/链接器完全脱离外部工具链。如果调试时需要 GCC 兜底可在编译期开启 featurecargo build --release --features gcc_assembler,gcc_linker四架构交叉编译实战第一个程序编译并运行以 Hello World 为例hello.c四条命令覆盖四个架构./target/release/ccc -o hello-x86 hello.c # x86-64 ./target/release/ccc-arm -o hello-arm hello.c # ARM64 ./target/release/ccc-riscv -o hello-riscv hello.c # RISC-V 64 ./target/release/ccc-i686 -o hello-i686 hello.c # i686原生 x86-64 产物直接运行其余三个用 QEMU 模拟执行qemu-aarch64 -L /usr/aarch64-linux-gnu ./hello-arm qemu-riscv64 -L /usr/riscv64-linux-gnu ./hello-riscv qemu-i386 -L /usr/i686-linux-gnu ./hello-i686常用 GCC 兼容参数速查场景命令示例只输出汇编ccc -S input.c编译为对象文件ccc -c input.c仅预处理ccc -E input.c优化-O0 ~ -O3、-Os、-Ozccc -O2 -o out input.cDWARF 调试信息ccc -g -o out input.c宏定义 头文件路径ccc -DFOO1 -Iinclude/ input.c位置无关代码 / 共享库ccc -fPIC -shared -o lib.so lib.c未识别的架构相关参数如部分-m标志会被静默忽略这正是它能作为drop-in GCC 替换的关键。想确认当前后端可用ccc -dumpmachine查看例如 ARM64 会报告aarch64-linux-gnu。无缝接入 Make / CMake / configuremake CC/path/to/ccc-arm # Make cmake -DCMAKE_C_COMPILER/path/to/ccc-x86 .. # CMake ./configure CC/path/to/ccc-riscv # autotools构建系统探测版本时CCC 报告为 GCC 14.2.0ccc -dumpversion输出 14兼容性探测可以直接通过。终极验证用 ccc-riscv 编译可启动的 Linux 内核这是 CCC 最具说服力的能力。参考仓库中人工撰写的 BUILDING_LINUX.txt 记录make ARCHriscv CC/path/to/ccc-riscv HOSTCC/path/to/ccc-x86 \ CROSS_COMPILEriscv64-linux-gnu- defconfig make ARCHriscv CC/path/to/ccc-riscv HOSTCC/path/to/ccc-x86 \ CROSS_COMPILEriscv64-linux-gnu- -j$(nproc) Image生成的arch/riscv/boot/Image可配合 Busybox initramfs 在 QEMU 中启动内核uname输出会显示ccc (Claudes C Compiler, GCC-compatible) 14.2.0。ARM 与 x86-64 内核同样支持仓库中还有 ARM KVM、i686 独立内核等攻关记录见 current_tasks/ 目录下的各任务文档。深入源码四架构后端是怎么组织的对想理解一份源码如何支撑四个架构的读者推荐阅读 src/backend/README.md其中详细描述了完整流水线IR → 寄存器分配 → 指令选择 → 汇编 → 链接。四个架构后端并列存放各自包含 codegen / assembler / linker 三件套架构后端目录调用约定x86-64src/backend/x86/SysV AMD64 ABIi686src/backend/i686/cdecl / ILP32ARM64src/backend/arm/AAPCS64RISC-V 64src/backend/riscv/LP64D架构无关的共享逻辑三级栈槽分配、线性扫描寄存器分配器、调用 ABI 分类、F128 软浮点集中在 src/backend/stack_layout/、src/backend/regalloc.rs、src/backend/call_abi.rs。整体架构设计可参考 DESIGN_DOC.md。调试技巧与已知限制常用环境变量变量作用CCC_TIME_PHASES1输出各编译阶段耗时CCC_TIME_PASSES1输出各优化 pass 耗时与改动数CCC_DISABLE_PASSESall关闭优化 pass定位问题时很好用CCC_KEEP_ASM1保留中间.s汇编文件使用注意来自官方说明-O0~-O3目前走同一套优化流水线后续版本会分级long doublex86 使用 x87 80 位精度ARM/RISC-V 通过软浮点实现 IEEE binary128_Complex、_Atomic、部分 NEON intrinsics 存在边缘情况未完全覆盖仓库作者明确说明代码由 Claude Opus 4.6 独立编写未经人工正确性验证不建议直接用于生产环境总结关键点一句话回顾构建cargo build --release一次得到 5 个架构二进制选型按二进制名ccc-arm、ccc-riscv…选择目标架构依赖仅需 Rust 目标 sysroot无需外部汇编器/链接器验证可编译 Linux 6.9 内核并在 QEMU 中启动一份源码、四个架构、零外部工具链——这就是 claudes-c-compiler 的魅力所在。无论你是想体验 C 交叉编译的全流程还是想研究编译器后端设计它都值得一试。【免费下载链接】claudes-c-compilerClaude Opus 4.6 wrote a dependency-free C compiler in Rust, with backends targeting x86 (64- and 32-bit), ARM, and RISC-V, capable of compiling a booting Linux kernel.项目地址: https://gitcode.com/gh_mirrors/cl/claudes-c-compiler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表