# xcc_toolkit **Repository Path**: yoursmengle/xcc_toolkit ## Basic Information - **Project Name**: xcc_toolkit - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xcc-toolkit — Windows 便携交叉编译工具包 面向 `arm-linux` 和 `aarch64-linux` 的 Go / Rust 交叉编译,无需安装,无需 WSL。 --- ## 目录结构 ``` xcc-toolkit/ ├── README.md 本文档 ├── setup.bat 首次初始化(下载工具链、配置 Rust targets) ├── env.bat 进入编译环境(每次使用前 call) ├── xcc-go.bat Go 交叉编译封装 ├── xcc-rust.bat Rust 交叉编译封装 │ ├── toolchains/ │ ├─ arm-linux-gnueabihf/ ARM 32-bit 工具链(由 setup.bat 下载) │ └── aarch64-linux-gnu/ AArch64 64-bit 工具链(由 setup.bat 下载) │ ├── go/ Go 编译器(由 setup.bat 下载) │ ├── rust/ │ ├── rustup/ RUSTUP_HOME(便携) │ └── cargo/ CARGO_HOME(便携) │ ├── .cargo/ │ └── config.toml 全局 Cargo 链接器配置 │ ├── scripts/ │ ├── download-toolchains.ps1 下载工具链的 PowerShell 脚本 │ ├── build-all.bat 批量编译示例 │ └── check-env.bat 环境自检脚本 │ └── examples/ ├── go-hello/ Go 示例(Hello World) ├── go-http/ Go 示例(HTTP Server) ├── rust-hello/ Rust 示例(Hello World) └── rust-http/ Rust 示例(Axum HTTP Server) ``` --- ## 快速开始 ### 第一步:下载工具包并初始化 ```bat cd xcc-toolkit setup.bat ``` `setup.bat` 会自动: 1. 下载 ARM GNU Toolchain(Windows 托管版,来自 ARM 官方) 2. 下载 Go for Windows 3. 初始化便携 rustup,安装 Rust stable 4. 添加 arm / aarch64 编译目标 5. 写入 `.cargo/config.toml` 链接器配置 ### 第二步:编译 Go 项目 ```bat :: 进入工具包环境 call env.bat :: 编译为 ARM 32-bit(armv7) xcc-go.bat arm ./examples/go-hello :: 编译为 AArch64 64-bit xcc-go.bat arm64 ./examples/go-hello ``` ### 第三步:编译 Rust 项目 ```bat call env.bat :: 编译为 ARM 32-bit xcc-rust.bat arm ./examples/rust-hello :: 编译为 AArch64 64-bit xcc-rust.bat arm64 ./examples/rust-hello ``` 输出产物在各项目的 `target//release/` 目录下。 --- ## 工具链说明 | 目标平台 | 工具链前缀 | 来源 | |---|---|---| | ARM 32-bit(armv7 硬浮点) | `arm-none-linux-gnueabihf-` | ARM GNU Toolchain | | AArch64 64-bit | `aarch64-none-linux-gnu-` | ARM GNU Toolchain | 工具链来自 [developer.arm.com](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads), 选用 **Windows (mingw-w64-x86_64) hosted** 版本,原生 `.exe`,无需任何 Unix 层。 --- ## Rust 目标 triple | 目标 | Triple | |---|---| | ARM 32-bit | `armv7-unknown-linux-gnueabihf` | | AArch64 64-bit | `aarch64-unknown-linux-gnu` | --- ## CGO 支持 Go 默认 `CGO_ENABLED=0`(纯静态二进制),无需额外配置。 若项目需要 CGO,`xcc-go.bat` 会自动设置 `CC` 指向对应工具链的 GCC。 --- ## 常见问题 **Q: 编译出的二进制文件在 ARM 设备上报 "not found" 错误?** A: 可能是动态链接库版本不匹配。使用 `file yourbin` 检查链接方式; 对 Go 默认 CGO=0 时输出为静态二进制,不依赖 libc 版本。 **Q: Rust 项目需要 C 依赖(如 openssl)怎么办?** A: 推荐使用 `openssl` crate 的 `vendored` feature 或 `rustls` 替代, 或在工具链目录下提供目标 sysroot。 **Q: 如何更新工具链?** A: 运行 `setup.bat --update` 即可重新下载最新版本。