【问题标题】:Get golang version from compiled binary从已编译的二进制文件中获取 golang 版本
【发布时间】:2016-06-05 10:21:17
【问题描述】:

有没有办法从pkg/ 或编译的二进制文件中获取 golang 版本? 我只想在更改 golang 版本时自动删除 $GOPATH/pkg 文件夹。

【问题讨论】:

  • AFAIK 从 Go 1.5 开始没有必要这样做。
  • 我还在 1.4.3 和 1.6/1.7b1 之间徘徊(一些项目已经使用 1.6+,其他一些更大的项目仍在使用 1.4.3)

标签: go


【解决方案1】:

没关系,找到答案了

[ `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

【讨论】:

    【解决方案2】:

    在 1.9.2 中,grep 命令是

    strings $pkg_a_file | grep 'Go cmd/compile' 
    

    【讨论】:

      【解决方案3】:

      我找到了以下方法,检查用于编译二进制文件的 Go lib 的版本

      $ strings compiled_binary | grep '^go1'
      go1.17.4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多