这是一次离谱问题和胡搞一通莫名解决的记录

背景: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.

真的是。。。。。。

go: no such tool "compile"(记录)的更多相关文章

  1. Spring Tool Suite记录

    快速查询:选中项目名按CTRL+H

  2. Go命令行—compile

    常用作编译命令行指定的单个go源码包.会生成一个以文件.o为后缀的目标文件,其文件名与包内第一个源文件的文件名相同. 目标文件可以与其他对象组合成一个包档案或直接传递给链接器(go tool link ...

  3. android-包签名

    android-包签名 应用能在Android 系统上安装必须是经过有私有key的证书数据签名.Android系统通过证书确定应用的作者,和与应用建立信任关系.证书不会用于控制应用的安装.证书不需要权 ...

  4. Go中string转[]byte的陷阱

    Go中string转[]byte的陷阱html {overflow-x: initial !important;}#write, body { height: auto; }#write, #writ ...

  5. 深度解密Go语言之关于 interface 的10个问题

    目录 1. Go 语言与鸭子类型的关系 2. 值接收者和指针接收者的区别 方法 值接收者和指针接收者 两者分别在何时使用 3. iface 和 eface 的区别是什么 4. 接口的动态类型和动态值 ...

  6. 深度解密Go语言之Slice

    目录 当我们在说 slice 时,到底在说什么 slice 的创建 直接声明 字面量 make 截取 slice 和数组的区别在哪 append 到底做了什么 为什么 nil slice 可以直接 a ...

  7. Go命令官方指南【原译】

    启动错误报告 编译包和依赖项 删除目标文件和缓存的文件 显示包或符号的文档 打印Go环境信息 更新包以使用新API Gofmt(重新格式化)包源 通过处理源生成Go文件 下载并安装包和依赖项 编译并安 ...

  8. 05. Go 语言函数

    Go 语言函数 函数是组织好的.可重复使用的.用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率. Go 语言支持普通函数.匿名函数和闭包,从设计上对函数进行了优化和改进,让函 ...

  9. cgo 和 Go 语言是两码事

    cgo不是Go 借用 JWZ的一句话 有些人,当他们面临一个问题时,认为“我知道,我会使用 cgo ”.那么现在,他们有了两个问题. 最近有人在 Gopher 的 Slack Channel 上使用 ...

  10. Go和Java的性能对比,真的如此吗?

    前两天我看到了一篇文章,测试Java和Go和Python的性能,其测试内容是一个排序,排序一亿次,然后看那个语言耗时最短,我先贴一下这个文章的测试结果,Java竟然比Go快了一倍不止,Go不是号称接近 ...

随机推荐

  1. kafka介绍和使用

    1 Kafka简介 ​Kafka是最初由Linkedin公司开发,它是一个分布式.可分区.多副本,基于zookeeper协调的分布式日志系统:常见可以用于web/nginx日志.访问日志,消息服务等等 ...

  2. biancheng-数据结构

    目录http://c.biancheng.net/data_structure/ 1数据结构入门2线性表3栈和队列4字符串5数组和广义表6树存储结构7图存储结构8动态内存管理9查找表结构10排序算法1 ...

  3. linux:权限管理

    权限概述 linux一般讲文件可存 / 取 访问的身份分为3个类别:owner.group.others,且3种身份各有 read.write.execute等权限 权限介绍 在多用户计算机系统中,权 ...

  4. XposedAPI pg walkthrough Intermediate

    nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.226.134 Starting Nmap 7.94SVN ( https://nmap.org ...

  5. VuePress 博客搭建系列 33 篇正式完结!

    前言 VuePress 博客搭建系列是我写的第 6 个系列文章,前 5 个系列分别是 JavaScript 深入系列,JavaScript 专题系列.underscore 系列.ES6 系列.Type ...

  6. DeepSeek V3 两周使用总结

    2024 年 12 月 26 日,杭州深度求索人工智能基础技术研究有限公司发布 DeepSeek-V3 大模型.官方宣称:(1)基于自研的 MoE 模型和 671B 参数,在 14.8T token ...

  7. 使用xtrabackup对MySQL8.0.34进行备份和恢复

    Percona XtraBackup 是一款开源的.用于 MySQL 和 MariaDB 的热备份工具,它可以在不停止数据库服务的情况下进行全量或增量备份,并且能够快速恢复数据.以下从特点.安装.备份 ...

  8. ELB UDP健康检查常见故障分析

    本文分享自天翼云开发者社区<ELB UDP健康检查常见故障分析>,作者:王****宁 什么是UDP健康检查 UDP是面向非连接的一种协议,在发送数据前不会通过进行三次握手建立连接,UDP健 ...

  9. CMW500 Bluetooth信令测试

    一.简介 R&SCMW500宽带无线通信测试仪是适用于射频集成和协议开发的通用测试平台,其内部集成RF功率计和带List模式的CW发生器,可以完成无线设备的快速校准:同时还集成了矢量信号分析仪 ...

  10. VsCode 配置python开发环境

    一.配置环境 1.选择python解释器版本 输入:Command+shift+P 搜索:Python: Select Interpreter 2.安装包 指定版本: pip install PyHi ...