go: no such tool "compile"(记录)
背景:win11系统下,原有的go1.18更新到go1.19后出现了莫名的go: no sucn tool "compile"的情况。
当时检查go env,如下:
PS D:\Desktop> go env set GO111MODULE=off set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\user\AppData\Local\go-build set GOENV=C:\Users\user\AppData\Roaming\go\env set GOEXE=.exe set GOEXPERIMENT= set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GOMODCACHE=D:\documents\gocourse\pkg\mod set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=D:\software\go set GOPRIVATE= set GOPROXY=https://proxy.golang.org,direct set GOROOT=D:\documents\gocourse set GOSUMDB=sum.golang.org set GOTMPDIR= set GOTOOLDIR=D:\software\go\pkg\tool\windows_amd64 set GOVCS= set GOVERSION=go1.19.2 set GCCGO=gccgo set GOAMD64=v1 set AR=ar set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD= set GOWORK= set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\user\AppData\Local\Temp\go-build126469990=/tmp/go-build -gno-record-gcc-switches
解读一下:上面的gocourse目录是我旧版本的go项目所在,而software下面的go文件夹则是go的安装路径,所以照理来说,GOPATH应该是项目路径,然后GOROOT应当是安装路径才对,但新版本安装后,啥都反过来了。连带着GOTOOLDIR参数都跟着乱了。
另外,上面报错出现的地方其实就是一个简单的hello初级包的测试,我在run的时候直接给我报这个错误。
PS D:\Desktop>go run test.go go: no sucn tool "compile" go: no sucn tool "compile" go: no sucn tool "compile"
关于compile包,其实是安装路径下pkg包下的对应系列软件,windows的话就是windows_amd64,linux则是linux_amd64之类的参数。
折腾的开始
根据某某某网友的提示,我找了旧版本的go来重装,当然首先是卸载了原有go版本的,另外env设置文件是由专门的保存路径的,也需要删除,文件路径就是C:\Users\penta\AppData\Roaming\go下的env文件。因为新版本已经有比较完整的生态,可以直接在控制面板上面进行卸载程序,卸载完成后,顺带把环境变量也删了一批。重新打开win11终端。
右键打开了终端,重新检查一下版本,嗯,版本ok,检查参数,OH!My eye!
PS D:\Desktop> go env set GO111MODULE=off set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\user\AppData\Local\go-build set GOENV=C:\Users\user\AppData\Roaming\go\env set GOEXE=.exe set GOEXPERIMENT= set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GOMODCACHE=D:\documents\gocourse\pkg\mod set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=D:\software\go set GOPRIVATE= set GOPROXY=https://proxy.golang.org,direct set GOROOT=D:\documents\gocourse set GOSUMDB=sum.golang.org set GOTMPDIR= set GOTOOLDIR=D:\software\go\pkg\tool\windows_amd64 set GOVCS= set GOVERSION=go1.18.7 set GCCGO=gccgo set GOAMD64=v1 set AR=ar set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD= set GOWORK= set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\user\AppData\Local\Temp\go-build126469990=/tmp/go-build -gno-record-gcc-switches
继续折腾
没办法,那就修改设置吧,
PS D:\Desktop>go env -w GOPATH=D:\documents\gocourse go env -w GOPATH=... does not override conflicting OS environment variable
嗯?这又什么鬼,为啥不让修改。继续百度。。。。。。没一个有用资料,都是叫unset GOPATH,但系统不识别你这个指令啊!这里不行,那就直接在用户变量里面进行定制吧。
心想,这样总可以了吧?嗯,继续go env
^%$&%*((,简直骂人,然后某位网友又有建议了,用超级用户模式来设置这个参数,嗯,管理员打开cmd,先看看参数,go env,嗯。。。。。。
C:\Windows\system32>go env set GO111MODULE=off set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\user\AppData\Local\go-build set GOENV=C:\Users\user\AppData\Roaming\go\env set GOEXE=.exe set GOEXPERIMENT= set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GOMODCACHE=D:\documents\gocourse\pkg\mod set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=D:\documents\gocourse set GOPRIVATE= set GOPROXY=https://proxy.golang.org,direct set GOROOT=D:\software\go set GOSUMDB=sum.golang.org set GOTMPDIR= set GOTOOLDIR=D:\software\go\pkg\tool\windows_amd64 set GOVCS= set GOVERSION=go1.18.7 set GCCGO=gccgo set GOAMD64=v1 set AR=ar set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD= set GOWORK= set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\user\AppData\Local\Temp\go-build126469990=/tmp/go-build -gno-record-gcc-switches
这不就改好了吗?为什么powershell不更新的?????没法子,只好重启一下,嗯,好了。运行一下:
PS D:\Desktop> go run test.go Hello, I' m your father.
真的是。。。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了