开始使用
安装 SDK
下载、校验并配置协同版本的 C2Go SDK 与 runtime module。维护者C2Go contributorsRelease 压缩包是可以整体移动的原生 SDK,包含三个命令行工具、C2Go 头文件、Clang runtime resource,以及再分发所需的授权记录。它不包含仓库 checkout 或源码树。
环境要求
- Go 1.25.x 或 1.26.x。Go 1.27 及更高版本在新版中央 contract provider 完成验证前会 fail closed。
- 与运行工具的机器 OS 和架构匹配的平台包。
- Go module 将
github.com/c2gohq/c2go_libc固定为v0.20260809.0-rc.5。
选择平台包
| 宿主平台包 | C2Go target triple |
|---|---|
linux-amd64 |
x86_64-unknown-linux-goabi |
linux-arm64 |
aarch64-unknown-linux-goabi |
windows-amd64 |
x86_64-pc-windows-goabi |
macos-arm64 |
aarch64-apple-darwin |
从 Release 页面下载压缩包及同名 .sha256 sidecar,然后只校验实际下载的平台包:
archive=c2go-toolchain-v0.20260809.0-rc.5-linux-amd64.tar.gz
sha256sum --check "$archive.sha256"
如果下载了 release 的全部 archive,也可以用 SHA256SUMS 一次校验全部文件。macOS 可使用 shasum -a 256 -c "$archive.sha256";Windows PowerShell 可用 Get-FileHash -Algorithm SHA256 计算后与 sidecar 比对。
当前版本尚未签名,因此不要跳过校验。
配置 shell
解压后让 bin/、include/ 与 lib/ 始终位于同一个 SDK 根目录:
export C2GO_HOME=/absolute/path/to/c2go-toolchain-v0.20260809.0-rc.5-<target>
export PATH="$C2GO_HOME/bin:$PATH"
c2go-clang --version
c2go-lto --version
c2go-bind --version
在 -fc2go 模式下,c2go-clang 会自动发现顶层 c2go-libc 头文件和自己的 Clang resource 目录。不要额外加入宿主系统 libc 的 include 目录。
c2go.h 属于 lib/clang/<version>/include/c2go.h 下的 Clang resource。SDK 顶层 include/ 只保存 c2go-libc 跟踪的公共头文件。
固定 runtime module
在项目目录中执行:
go mod init example.com/demo
go get github.com/c2gohq/c2go_libc@v0.20260809.0-rc.5
Go runtime package 通过 module 而不是预编译 archive 分发,因为 Go package archive 会绑定精确的 Go 版本、依赖 build ID 和构建参数。
Schema v2 生成库会在编译期同时核对 C2Go ABI epoch 与 Go toolchain contract epoch。未来兼容的 Go minor 版本只需升级 c2go-libc 中的 provider,不需要重新生成每个目标库。完整升级规则见版本与兼容性。
macOS quarantine
macOS 压缩包还没有 notarize。完成 SHA-256 校验后,如果 Gatekeeper 阻止工具运行,只对解压后的 SDK 目录移除 quarantine:
xattr -dr com.apple.quarantine "$C2GO_HOME"
不要把这个命令应用到更大的目录。
检查目录结构
SDK 根目录应包含:
bin/ c2go-clang、c2go-lto、c2go-bind
include/ c2go-libc 公共头文件
lib/clang/<version>/ Clang resource,包含 c2go.h
licenses/ 组件和第三方授权记录
BUILD-INFO.json 精确构建信息与校验值
toolchain.lock.json 协同源码快照
接下来可以构建 Hello World。