生成标记禁用的包仍链接到二进制文件中



我使用构建标记来禁用一个功能,例如:

来源

  • abc_enable.go
// +build abc
package main
import (
"big-package"
"bigbig"
)
...
  • abc_disable.go
// +build !abc
// empty

生成cmd

  • 启用:go build --tags abc
  • 禁用:go build

此方法始终有效。

问题

但我发现当abc被禁用时,构建二进制大小仍然很大。

  • 保留abc_enable.go,--tags abc。尺寸高达11M
  • 保留abc_enable.go,没有标签。大小高达11M
  • 手动删除abc_enable.go,大小降至5M

是否有任何链接选项或构建选项可以修复此问题

构建约束

为了区分构建约束和包文档的生成约束必须后面跟一个空行。

这意味着原始代码片段中的// +build abc不被视为编译约束。要解决此问题,您必须在package子句的上方添加一个空行。

// +build abc
package main
import (
"big-package"
"bigbig"
)
...

相关内容

  • 没有找到相关文章

最新更新