【问题标题】:To produce a pure statically linked binary, is it still necessary to compile with -tags netgo in Go 1.5+?要生成纯静态链接的二进制文件,是否仍然需要在 Go 1.5+ 中使用 -tags netgo 进行编译?
【发布时间】: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


    【解决方案1】:

    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 个系统的行为与以前一样。

    所以没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2015-04-02
      • 1970-01-01
      相关资源
      最近更新 更多