我正在嘗試創建一個純靜態鏈接的二進制文件,以在最小的Docker容器中運行。在Go 1.5之前,我是這樣構建它們的:要生成純靜態鏈接二進制文件,是否仍需要在Go 1.5+中使用-tags netgo進行編譯?
go build -a -tags netgo -installsuffix netgo myfile.go
我知道C已經從版本1.5中的Go編譯器中剝離出來了。是否仍然需要使用-tags
和-installsuffix
?
我正在嘗試創建一個純靜態鏈接的二進制文件,以在最小的Docker容器中運行。在Go 1.5之前,我是這樣構建它們的:要生成純靜態鏈接二進制文件,是否仍需要在Go 1.5+中使用-tags netgo進行編譯?
go build -a -tags netgo -installsuffix netgo myfile.go
我知道C已經從版本1.5中的Go編譯器中剝離出來了。是否仍然需要使用-tags
和-installsuffix
?
https://golang.org/doc/go1.5#net
在網包中的DNS解析幾乎總是用CGO到 接入系統的接口。 Go 1.5的變化意味着在大多數Unix系統上DNS解析將不再需要cgo,而這些 簡化了這些平臺上的執行。現在,如果系統的 網絡配置允許,則本地Go解析器就足夠了。 此更改的重要作用是每個DNS解析度 佔用一個goroutine而不是一個線程,因此具有多個 未完成DNS請求的程序將佔用更少的操作系統資源。
如何運行解析器的決定適用於運行時,而不是構建 時間。 用於強制使用 Go解析器的netgo構建標籤不再需要,儘管它仍然有效。一個新的 netcgo構建標籤強制在構建時使用cgo解析器。到 在運行時強制cgo分辨率在 環境中設置GODEBUG = netdns = cgo。這裏記錄更多的調試選項。
此更改僅適用於Unix系統。 Windows,Mac OS X和計劃 9系統的行爲與以前一樣。
所以沒有。