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 評価