我正在尝试创建一个纯静态链接二进制文件,以便在最小的Docker容器中运行。在Go 1.5之前,我正在构建它们:
go build -a -tags netgo -installsuffix netgo myfile.go
据我所知,在1.5版本中,C已经脱离了Go编译器。是否仍需要使用-tags
和-installsuffix
进行构建?
答案 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个系统的行为与以前一样。
所以没有。