要生成纯静态链接二进制文件,是否仍需要在Go 1.5+中使用-tags netgo进行编译?

rya*_*yan 4 go static-linking

我正在尝试创建一个纯粹的静态链接二进制文件,以便在最小的Docker容器中运行.在Go 1.5之前,我正在构建它们:

go build -a -tags netgo -installsuffix netgo myfile.go
Run Code Online (Sandbox Code Playgroud)

我知道在1.5版本中,C已经脱离了Go编译器.是否仍然有必要建立与-tags-installsuffix

Hec*_*orJ 8

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和Plan 9系统的行为与以前一样.

所以不行.