被构建标签禁用的包仍然链接到二进制文件中
Packages disabled by build tags still linked into binary
我使用构建标签来禁用一项功能,例如:
来源
- abc_enable.go
// +build abc
package main
import (
"big-package"
"bigbig"
)
...
- abc_disable.go
// +build !abc
// empty
构建命令
- 启用:
go build --tags abc
- 禁用:
go build
此方法始终有效。
问题
但我发现当禁用 abc 时构建二进制文件的大小会保持很大。
- 保持 abc_enable.go、
--tags abc
。最大 11M
- 保持abc_enable.go,没有标签。最大 11M
- 手动删除abc_enable.go,尺寸缩小到5M
是否有任何 link 选项或构建选项来解决此问题?
To distinguish build constraints from package documentation, a series
of build constraints must be followed by a blank line.
这意味着您原始代码片段中的 // +build abc
未 被视为构建约束。要解决此问题,您必须在 package 子句上方添加一个空行。
// +build abc
package main
import (
"big-package"
"bigbig"
)
...
我使用构建标签来禁用一项功能,例如:
来源
- abc_enable.go
// +build abc
package main
import (
"big-package"
"bigbig"
)
...
- abc_disable.go
// +build !abc
// empty
构建命令
- 启用:
go build --tags abc
- 禁用:
go build
此方法始终有效。
问题
但我发现当禁用 abc 时构建二进制文件的大小会保持很大。
- 保持 abc_enable.go、
--tags abc
。最大 11M - 保持abc_enable.go,没有标签。最大 11M
- 手动删除abc_enable.go,尺寸缩小到5M
是否有任何 link 选项或构建选项来解决此问题?
To distinguish build constraints from package documentation, a series of build constraints must be followed by a blank line.
这意味着您原始代码片段中的 // +build abc
未 被视为构建约束。要解决此问题,您必须在 package 子句上方添加一个空行。
// +build abc
package main
import (
"big-package"
"bigbig"
)
...