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

时间:2015-09-05 17:55:16

标签: go static-linking

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

go build -a -tags netgo -installsuffix netgo myfile.go

据我所知,在1.5版本中,C已经脱离了Go编译器。是否仍需要使用-tags-installsuffix进行构建?

1 个答案:

答案 0 :(得分:8)

https://golang.org/doc/go1.5#net

  

网络包中的DNS解析器几乎总是使用cgo   访问系统界面。 Go 1.5的变化意味着最多   Unix系统DNS解析将不再需要cgo,其中   简化了在这些平台上的执行。现在,如果系统的话   网络配置许可,本机Go解析器就足够了。   这种变化的重要影响是每个DNS解析   占用一个goroutine而不是一个线程,所以一个程序有多个   未完成的DNS请求将消耗更少的操作系统   资源。

     

如何运行解析器的决定适用于运行时,而不是构建   时间。 用于强制使用的netgo构建标记   不再需要解析器,尽管它仍然有效。一个新的   netcgo build tag强制在构建时使用cgo解析器。至   在运行时强制cgo解析设置GODEBUG = netdns = cgo   环境。此处记录了更多调试选项。

     

此更改仅适用于Unix系统。 Windows,Mac OS X和Plan   9个系统的行为与以前一样。

所以没有。