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
構築するのと同じです
これは、動的リンク用に構成されたツールチェーンによってすべてのパッケージを再構築する必要があり、デフォルトでは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
使用できるため、これは初めて発生するだけです。