从编译的二进制文件中获取golang版本

4

有没有一种方法可以从pkg/或编译的二进制文件中获取Golang版本号?我想要在更改Golang版本时自动化删除$GOPATH/pkg文件夹。


1
据我所知,从Go 1.5开始就不需要这样做了。 - kostya
我仍在1.4.3和1.6/1.7b1之间摇摆不定(一些项目已经使用了1.6+,有些更大的项目仍在使用1.4.3)。 - Kokizzu
3个回答

2

没关系,找到答案了。

[ `strings $pkg_a_file | grep 'go object' | head -n 1 | cut -f 5 -d ' '` != `go version | cut -f 3 -d ' '` ] && \     
rm -rf $GOPATH/pkg

strings $pkg_a_file | grep 'go object' | head -n 1 | cut -f 5 -d ' ' 这部分将会显示类似于 go1.6.2 的内容。

pkg_a_file 可以是以下形式之一:

PKG_OS_ARCH=`go version | cut -d ' ' -f 4 | tr '/' '_'`
pkg_a_file=$GOPATH/pkg/$PKG_OS_ARCH/gitlab.com/kokizzu/gokil/A.a

外部参考:http://kokizzu.blogspot.co.id/2016/06/solution-for-golang-slow-compile.html

这篇文章介绍了一些解决Golang编译速度慢的方法。如果你使用Golang开发,那么这些技巧可能会对你有所帮助。其中包括使用SSD硬盘、添加缓存、升级Golang版本等等。

2
我发现了以下方法,可以检查用于编译二进制文件的Go lib版本。
$ strings compiled_binary | grep '^go1'
go1.17.4

1
使用1.9.2版本时,grep命令为:
strings $pkg_a_file | grep 'Go cmd/compile' 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接