go build fails : runtime/mstkbar.go:151:10: debug.gcstackbarrieroff undefined

匿名 (未验证) 提交于 2019-12-03 08:41:19

问题:

This code compiled OK using prior release of golang (1.8.3) however fails to compile after upgrading to new golang (1.9)

~/src/gopath/src/github.com/scottstensland/infosynth $ go build infosynth.go # runtime /usr/local/go/src/runtime/mstkbar.go:151:10: debug.gcstackbarrieroff undefined (type struct { allocfreetrace int32; cgocheck int32; efence int32; gccheckmark int32; gcpacertrace int32; gcshrinkstackoff int32; gcrescanstacks int32; gcstoptheworld int32; gctrace int32; invalidptr int32; sbrk int32; scavenge int32; scheddetail int32; schedtrace int32 } has no field or method gcstackbarrieroff) /usr/local/go/src/runtime/mstkbar.go:162:24: division by zero /usr/local/go/src/runtime/mstkbar.go:162:43: invalid expression unsafe.Sizeof(composite literal) /usr/local/go/src/runtime/mstkbar.go:162:44: undefined: stkbar /usr/local/go/src/runtime/mstkbar.go:212:4: gp.stkbar undefined (type *g has no field or method stkbar) /usr/local/go/src/runtime/mstkbar.go:213:15: gp.stkbar undefined (type *g has no field or method stkbar) /usr/local/go/src/runtime/mstkbar.go:216:23: undefined: stackBarrierPC /usr/local/go/src/runtime/mstkbar.go:226:28: gp.stkbarPos undefined (type *g has no field or method stkbarPos) /usr/local/go/src/runtime/mstkbar.go:227:19: gp.stkbarPos undefined (type *g has no field or method stkbarPos) /usr/local/go/src/runtime/mstkbar.go:248:41: undefined: stkbar /usr/local/go/src/runtime/mstkbar.go:227:19: too many errors 

Any ideas ? Actually, this error happens for any golang version upgrade not just the versions I mentioned here.

PS Also get same errors when issuing : go get -v -t ./...

回答1:

SOLUTION : you must first delete previous golang install prior to installing new go version

type go    # issue this to confirm where your go lives 

a typical output :

go is /usr/local/go/bin/go  # delete /usr/local/go not just /usr/local/go/bin/go 

so just remove it

sudo rm -rf /usr/local/go  #  OP's missing step else above errors 

before you install new version

export golang_ver=$(curl https://golang.org/VERSION?m=text 2> /dev/null) wget https://storage.googleapis.com/golang/${golang_ver}.linux-amd64.tar.gz sudo tar -C /usr/local -xzf ${golang_ver}.linux-amd64.tar.gz 


回答2:

I use Windows10. I have to uninstall go18 with Control Panel (do not trust 1.9 installer when he asks to uninstall prev version - do it by hands). After that I remove c:\go - the default goroot and only after this - install 1.9. In my case it was 1.9.2 And of course check your GOROOT && GOPATH



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!