查找二进制文件是使用哪个版本的Go构建的?

huangapple go评论84阅读模式
英文:

Find out the version of Go a Binary was built with?

问题

有没有办法确定一个二进制文件是用哪个 Go 版本构建的?

我在我的工作站上有多个 Go 实例,所以我想要验证是否使用了正确的版本。

英文:

Is there a way to tell what go version a binary was built with?

I have multiple go instances on my workstation, so I want to verify that the correct one was used.

答案1

得分: 42

以下命令应该可以实现:

# strings 二进制文件路径 | grep 'go1\.'
go1.5.3
英文:

The following command should do it:

# strings binary_path | grep 'go1\.' 
go1.5.3

答案2

得分: 28

在运行时使用runtime.Version()函数可以确定你的二进制文件是使用哪个版本的Go构建的:

func Version() string

Version()函数返回Go树的版本字符串。它可以是一个序列号,或者在可能的情况下是一个发布标签,比如"release.2010-03-04"。如果在构建时树上有本地修改,则末尾会有一个+号。

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

usage: go version [-m] [-v] [file ...]

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

Go version报告用于构建每个指定可执行文件的Go版本。

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

如果指定了一个目录,go version将递归地遍历该目录,查找已识别的Go可执行文件并报告它们的版本。
默认情况下,go version不会报告在目录扫描期间找到的未识别文件。使用`-v`标志可以让它报告未识别的文件。

使用`-m`标志可以让go version打印每个可执行文件的嵌入模块版本信息(如果有)。在输出中,模块信息由版本行后面的多行组成,每行以一个制表符开头。

以上是要翻译的内容。

英文:

Use runtime.Version() at runtime to figure out what version of Go your binary was built with:

> func Version() string
>
> Version returns the Go tree's version string. It is either a sequence
> number or, when possible, a release tag like "release.2010-03-04". A
> trailing + indicates that the tree had local modifications at the time
> of the build.

For existing binaries, use the go version command:

> usage: go version [-m] [-v]


>
> Version prints the build information for Go executables.
>
> Go version reports the Go version used to build each of the named
executable files.
>
> If no files are named on the command line, go version prints its own
version information.
>
> If a directory is named, go version walks that directory, recursively,
looking for recognized Go binaries and reporting their versions.
By default, go version does not report unrecognized files found
during a directory scan. The -v flag causes it to report unrecognized files.
>
> The -m flag causes go version to print each executable's embedded
module version information, when available. In the output, the module
information consists of multiple lines following the version line, each
indented by a leading tab character.

答案3

得分: 13

使用 go version <path>

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

$ go version
go version go1.14.3 linux/amd64

使用 go version <path> 命令可以查看指定路径下的 Go 版本。在上述示例中,/usr/bin/syncthing 的 Go 版本为 go1.13.10,而未指定路径时,默认的 Go 版本为 go1.14.3。

英文:

Use go version &lt;path&gt;.

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

$ go version
go version go1.14.3 linux/amd64

huangapple
  • 本文由 发表于 2013年9月25日 03:22:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/18990242.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定