21

有没有办法告诉二进制文件是用什么版本构建的?

我的工作站上有多个 go 实例,因此我想验证是否使用了正确的实例。

4

3 回答 3

28

以下命令应该这样做:

# strings binary_path | grep 'go1\.' 
go1.5.3
于 2016-04-22T10:24:51.860 回答
21

在运行时使用runtime.Version()来确定你的二进制文件是用什么版本的 Go 构建的:

func Version() string

Version 返回 Go 树的版本字符串。它可以是序列号,也可以是发布标签,如“release.2010-03-04”。尾随 + 表示树在构建时进行了本地修改。

对于现有的二进制文件,使用以下go version命令:

用法:go version [-m] [-v] [file ...]

Version 打印 Go 可执行文件的构建信息。

Go 版本报告用于构建每个命名的可执行文件的 Go 版本。

如果命令行上没有命名文件,go version 会打印自己的版本信息。

如果一个目录被命名,go version 会递归地遍历该目录,寻找可识别的 Go 二进制文件并报告它们的版本。默认情况下,go 版本不报告在目录扫描期间发现的无法识别的文件。该-v标志导致它报告无法识别的文件。

-m标志使 go version 打印每个可执行文件的嵌入式模块版本信息(如果可用)。在输出中,模块信息由版本行之后的多行组成,每行由一个前导制表符缩进。

于 2013-09-24T20:12:00.380 回答
11

使用go version <path>.

$ go version /usr/bin/syncthing
/usr/bin/syncthing: go1.13.10

$ go version
go version go1.14.3 linux/amd64
于 2020-05-21T08:29:33.820 回答