< 返回版块

chuigda 发表于 2022-03-21 10:50

我们知道,由于 Rust 重度依赖泛型和单态化,rustc 会生成炒鸡多的 metadata,然后它们就会便乘巨量的 debug 信息:

一堆drop_in_place

有没有这样一种可能,我是说可能,通过某种属性,控制 debug 信息的生成,允许定向移除一些对调试作用不大的 debug 信息

#[strip_dbgsym]
fn no_debug_func() {
  /* ... */
}

从而减小 LLVM 和 linker 的压力,并进一步缩减最终可执行文件的体积

评论区

写评论
作者 chuigda 2022-03-21 15:03

这个会把所有 symbol 都给 strip 了,我的设想是定向 strip 掉某一些函数或者方法的 symbol。而且真要全 strip 的话直接用 objcopy 然后 strip 一发就行了。

--
👇
苦瓜小仔: https://doc.rust-lang.org/cargo/reference/profiles.html#strip

[profile.release]
strip = true # equivalent to `strip = "symbols"`
苦瓜小仔 2022-03-21 13:17

https://doc.rust-lang.org/cargo/reference/profiles.html#strip

[profile.release]
strip = true # equivalent to `strip = "symbols"`
作者 chuigda 2022-03-21 11:30

上面这堆就是 release 版本里的。理论上这些东西不会影响性能,因为只是 symbol。不过对编译器性能的影响就另当别论了。

--
👇
jiuker: release 版本应该没有这些吧

jiuker 2022-03-21 11:15

release 版本应该没有这些吧

1 共 4 条评论, 1 页