Kokizzu
Kokizzu

Reputation: 26818

Get golang version from compiled binary

Is there a way to get golang version from pkg/ or from compiled binary? I want to automate removal of $GOPATH/pkg folder only when I change the golang version.

Upvotes: 5

Views: 2561

Answers (3)

Michal
Michal

Reputation: 31

I found the following method, to check the version of Go lib used to compile the binary

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

Upvotes: 3

pinguin666
pinguin666

Reputation: 456

With 1.9.2, the grep command is

strings $pkg_a_file | grep 'Go cmd/compile' 

Upvotes: 1

Kokizzu
Kokizzu

Reputation: 26818

Nevermind, found the answer

[ `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 ' ' part will show something like go1.6.2

pkg_a_file can be something like this:

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

External reference: http://kokizzu.blogspot.co.id/2016/06/solution-for-golang-slow-compile.html

Upvotes: 3

Related Questions