如何在我的 Cargo.toml 中启用 --gc-targets?

Posted

技术标签:

【中文标题】如何在我的 Cargo.toml 中启用 --gc-targets?【英文标题】:How can I enable --gc-targets in my Cargo.toml? 【发布时间】:2021-09-09 02:09:06 【问题描述】:

根据wasm-gc的存档通知,

默认情况下,wasm-pack(和 wasm-bindgen)项目已经为您运行 [--gc-targets],因此无需再次运行。

我们如何在 Cargo.toml 中明确指定这一点?

【问题讨论】:

问题不清楚。您想在 Cargo 中明确指定什么?正如您对其他问题的回答 - ***.com/questions/68135109/… - Cargo 对 wasm-gc 或如何对 Wasm 文件进行 GC-ing 一无所知。 @RReverser 我想在我的 Cargo toml 中指定一个指令,指示 rustc 或链接器(接收选项)传递--gc-targets 没有--gc-targets 选项。正如 wasm-gc 的描述所说,“这对于任意 wasm 可执行文件实际上是 --gc-sections。” - 实际上意味着它不是一个实际的链接器选项,只是一个类似的后处理。而且,正如它还说的那样,来自编译器的 Wasm 是不必要的,因为它已经生成了没有未使用部分的 Wasm。你想解决什么问题? 【参考方案1】:

Rustc 传递参数

-C, --codegen OPT[=VALUE]
                    Set a codegen option

你想要 link-arg 的 codegen 选项,所以你可以像 -C link-arg=--gc-targets 一样使用它,你可以在 Cargo.toml 中设置它,

[[bin]]
rustflags = [
  "-C", "link-arg=--gc-targets",
]

或者,您现在可以直接使用 Cargo 中的新 experimental extra-link-arg 选项进行设置。

【讨论】:

以上是关于如何在我的 Cargo.toml 中启用 --gc-targets?的主要内容,如果未能解决你的问题,请参考以下文章

Rust中的Cargo工作空间实践

使用 DTrace 在 Rust 上获取堆栈跟踪/分析数据

如何告诉 Cargo 使用 git 标签来确定 crate 版本?

Rust 编程语言〇

带有库和二进制文件的 Rust 包?

文档示例中未解决的导入