搜索文档搜索当前语言
语言参考
候选版本v0.20260809.0-rc.5

本文档对应当前协同发布候选版本。

语言参考

命令行参考

c2go-clang、c2go-lto 与 c2go-bind 的实用参数参考。

本页汇总当前协同版本中稳定的用户侧参数。精确完整列表以已安装工具的 --help 或 -h 输出为准。

c2go-clang

参数 含义
-fc2go 开启 C2Go 语言扩展与 Go ABI lowering
--target=<triple> 选择机器架构、OS data model 与 Go ABI environment
-fc2go-package=<path> 写入产物的最终 Go import path;默认 main
-fc2go-emit-plan9-asm=<file> 输出 Plan 9 汇编
-fc2go-emit-manifest=<file> 输出 JSON export manifest
-fc2go-target-go-version=<lo-hi> 写入支持的 Go 版本区间;上界不包含
-O0 / -O2 选择未优化或优化的 C2Go lowering

SDK 的正常调用应使用 driver,而不是裸 -cc1:

c2go-clang --target=x86_64-unknown-linux-goabi \
  -fc2go -fc2go-package=example.com/acme/mypkg -O2 \
  -fc2go-emit-plan9-asm=out.s \
  -fc2go-emit-manifest=out.json \
  input.c

高级内部 knob 通过 -mllvm -<flag> 传入,包括 extern-wrapper fallback、选择性关闭 pass 和 cooperative loop-poll 间隔。应把它们看作诊断控制,而不是 package API。

c2go-lto

参数 含义
--c2go-emit-asm=<file> 输出合并的 Plan 9 汇编
--c2go-emit-manifest=<file> 输出合并 manifest
--c2go-emit-archive=<file> 把汇编与 manifest 打包为 ar archive
--c2go-escape-nonfatal 抑制逃逸报告并返回成功;只用于受控诊断
--c2go-lto-inline[=0] 开启或关闭跨单元内联
--c2go-andersen-field-sensitive 开启 field-sensitive 逃逸分析
--c2go-escape-dedup 合并重复逃逸报告
--c2go-print-stats 打印管线统计

独立 c2go-lto 才是栈指针逃逸的发布门禁:不要使用 --c2go-escape-nonfatal,并要求退出码为 0。当前版本的普通 Clang driver 不会强制这个门禁。详见栈指针逃逸安全。

c2go-bind

选项 含义
--pkgname 当 package 名不同于 manifest 路径末段时覆盖
--goname 生成 Go 文件的基础名称
--out 输出目录;默认为当前目录
--sidecar 为单个汇编输入指定 manifest
-l name / -L dir 绑定原生 import 并增加探测目录
--extern-os 严格覆盖,只接受 unix 或 windows
--dry-run 打印生成 Go,而不是写文件
--go 兼容性探测使用的 Go 命令
--skip-go-probe 跳过 Go contract probe;release 构建不要使用
--version 打印 binder 版本

c2go-bind 接受 .s、manifest、C2Go ar archive 以及多个兼容输入。正常写盘生成会在 package 中同时写入授权记录。

--pkgname 不会覆盖 import path,也不参与符号链接。默认值是 manifest pkgpath 的末段;只有实际 Go package clause 不同于这个默认值时才需要设置。

接下来查看平台与限制矩阵。