【发布时间】:2015-09-05 17:55:15
【问题描述】:
我正在尝试创建一个纯静态链接的二进制文件以在最小的 Docker 容器中运行。在 Go 1.5 之前,我是这样构建它们的:
go build -a -tags netgo -installsuffix netgo myfile.go
我了解到 C 语言在 1.5 版中已从 Go 编译器中删除。还需要用-tags和-installsuffix构建吗?
【问题讨论】:
标签: go static-linking
我正在尝试创建一个纯静态链接的二进制文件以在最小的 Docker 容器中运行。在 Go 1.5 之前,我是这样构建它们的:
go build -a -tags netgo -installsuffix netgo myfile.go
我了解到 C 语言在 1.5 版中已从 Go 编译器中删除。还需要用-tags和-installsuffix构建吗?
【问题讨论】:
标签: go static-linking
https://golang.org/doc/go1.5#net
net 包中的 DNS 解析器几乎总是使用 cgo 来 进入系统界面。 Go 1.5 的变化意味着在大多数 Unix 系统 DNS 解析将不再需要 cgo, 简化了在这些平台上的执行。现在,如果系统 网络配置允许,本地 Go 解析器就足够了。 这种变化的重要影响是每个 DNS 解析 占用一个goroutine而不是一个线程,所以一个程序有多个 未完成的 DNS 请求将消耗更少的操作系统 资源。
如何运行解析器的决定适用于运行时,而不是构建 时间。 已用于强制使用的 netgo 构建标记 Go 解析器不再是必需的,尽管它仍然有效。一个新的 netcgo 构建标签在构建时强制使用 cgo 解析器。到 在运行时强制cgo解析设置GODEBUG=netdns=cgo在 环境。此处记录了更多调试选项。
此更改仅适用于 Unix 系统。 Windows、Mac OS X 和计划 9 个系统的行为与以前一样。
所以没有。
【讨论】: