有没有办法告诉二进制文件是用什么版本构建的?
我的工作站上有多个 go 实例,因此我想验证是否使用了正确的实例。
以下命令应该这样做:
# strings binary_path | grep 'go1\.'
go1.5.3
在运行时使用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 打印每个可执行文件的嵌入式模块版本信息(如果可用)。在输出中,模块信息由版本行之后的多行组成,每行由一个前导制表符缩进。
使用go version <path>
.
$ go version /usr/bin/syncthing
/usr/bin/syncthing: go1.13.10
$ go version
go version go1.14.3 linux/amd64