Go: cmd / go:buildmode = plugin始终重新编译所有依赖项

创建于 2017-03-25  ·  1评论  ·  资料来源: golang/go

go version go1.8 linux/amd64

你做了什么?

例如,

package main
var V int
go build -buildmode=plugin -v test/main.go

您期望看到什么?

lion@Lion-Laptop [ test ] $ go build -buildmode=plugin -v test/main.go
command-line-arguments
lion@Lion-Laptop [ test ] $ 

您看到了什么?

lion@Lion-Laptop [ test ] $ go build -buildmode=plugin -v test/main.go
runtime/internal/sys
runtime/internal/atomic
runtime
runtime/cgo
command-line-arguments
lion@Lion-Laptop [ test ] $ 

与使用-a建立建筑物相同

NeedsFix help wanted

最有用的评论

这是因为所有软件包都需要通过配置为动态链接的工具链来重建,并且默认情况下go build不缓存中间软件包的生成。 我相信在cmd / go上的工作将改变这一状况,并且这个问题将消失。

在此之前,您可以在构建用于缓存中间包构建的插件时使用-i ,因此,这仅在第一次时发生:

$ go build -buildmode=plugin -i -v plugin1
runtime/internal/sys
runtime/internal/atomic
runtime
common
internal/cpu
errors
unicode/utf8
sync/atomic
unicode
internal/race
math
sync
syscall
strconv
reflect
runtime/cgo
plugin1
$ go build -buildmode=plugin -i -v plugin1
plugin1
$

>所有评论

这是因为所有软件包都需要通过配置为动态链接的工具链来重建,并且默认情况下go build不缓存中间软件包的生成。 我相信在cmd / go上的工作将改变这一状况,并且这个问题将消失。

在此之前,您可以在构建用于缓存中间包构建的插件时使用-i ,因此,这仅在第一次时发生:

$ go build -buildmode=plugin -i -v plugin1
runtime/internal/sys
runtime/internal/atomic
runtime
common
internal/cpu
errors
unicode/utf8
sync/atomic
unicode
internal/race
math
sync
syscall
strconv
reflect
runtime/cgo
plugin1
$ go build -buildmode=plugin -i -v plugin1
plugin1
$
此页面是否有帮助?
0 / 5 - 0 等级