go: no such tool “compile“(一次糟糕体验)

2023-11-14

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

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

真的是。。。。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go: no such tool “compile“(一次糟糕体验) 的相关文章

随机推荐

  • B/S架构和C/S架构的定义和区别(不同点)

    一 B S架构和C S架构的定义 1 B S Browser Server 浏览器和服务器架构 比如百度 微博 淘宝等网站 包含寄户端浏览器 web应用服务器 数据库服务器的软件系统 用户只需要一个浏览器就可以访问服务 系统更新时候 只需要
  • 【操作系统】操作系统知识点总结(秋招篇)

    文章目录 前言 操作系统主要做了哪些工作 进程 线程 协程之间的区别 进程的组成部分 介绍一下进程的PCB 讲一下进程的五态 以及它们的状态转移 用户态和内核态是什么 进程在用户态和内核态之间是如何切换的 讲一下进程之间的通信方式 讲一下进
  • [Unity2D]Tilemap Collider2D只给部分地图瓦片加上Collider的方法

    Unity2D Tilemap Collider2D 给Tilemap中的瓦片网格加上碰撞器 绿色的边框就是碰撞器 需要注意的是 如果给Tilpmap加碰撞器 其整个Tilpmap上的瓦片都会加上碰撞器 在一个Tilpmap上 如果想让部分
  • mongodb监控工具mongostat

    mongostat是mongodb自带的状态检测工具 在命令行下使用 会间隔固定时间获取mongodb的当前运行状态 并输出 常用命令格式 mongostat host 192 168 1 100 27017 uroot p123456 a
  • CreateRemoteThread的使用(转载)

    先解释一下远程进程 其实就是要植入你的代码的进程 相对于你的工作进程 如果叫本地进程的话 它就叫远程进程 可理解为宿主 首先介绍一下我们的主要工具CreateRemoteThread 这里先将函数原型简单介绍以下 CreateRemoteT
  • Android 特许权限白名单

    1 前言 在项目开发中 需求 app中有恢复出厂设置的功能 分解这个需求的时候 第一反应肯定不是第三方app 恢复出厂设置肯定需要有系统权限 属于系统级的app 然后在看手机系统中的功能 恢复出厂设置功能属于设置模块 找到源码阅读 当然是能
  • 2017-7-17 2-2 不使用&&和

    include
  • tomcat下载和配置(简单,详细)

    下载 官网 http tomcat apache org 找到需要的版本 点击download 在download页面 选择需要下载的 分为压缩版和安装版 我比较推荐压缩版 省事解压缩就好 配置 首先 tomcat7 0以上版本不需要配置环
  • 提高map[key]=value的效率

    当关乎效率时应该在map operator 和map insert之间仔细选择 我们知道 这个表达式 m k v 检查键k是否已经在map里 如果不 就添加上 以v作为它的对应值 如果k已经在map里 它的关联值被更新成v 举例一 考虑插入
  • 搭建第一个Dapp应用(4)——搭建SmartDev-Scaffold——2021.5.3

    搭建第一个Dapp应用 4 搭建SmartDev Scaffold 一丶环境配置 Java gt JDK 1 8 Solidity 0 4 25 Git 下载安装包需要使用Git Gradle 大于6 小于7 使用gradle7会报错 二丶
  • JavaEE规范与系统结构

    JavaEE规范 JavaEE规范是J2EE规范的新名称 早期被称为J2EE规范 其全称是Java 2 Platform Enterprise Edition 它是由SUN公司领导 各厂家共同制定并得到广泛认可的工业标准 JCP组织成员 之
  • Jenkins之定时构建

    1 操作环境 1 Jenkins Jenkins 2 75 2 定时构建 1 定时构建语法 第一个 表示分钟 取值0 59 第二个 表示小时 取值0 23 第三个 表示一个月的第几天 取值1 31 第四个 表示第几月 取值1 12 第五个
  • 由java:local_policy.jar和US_export_policy.jar引发的“血案”

    起因 今天项目上线 上线后监测日志 发现由异常 开始查找问题 进而引发了 血案 线上日志报错如下 Illegal key size 画外音 看到线上项目出现问题心里慌的一批 赶紧扒拉出代码 一行一行对着报错日志查看 最后定位到 AES ae
  • 制作SD卡启动盘(编译烧写u-boot)

    一 SD启动盘制作 将我们的sdfuse q文件夹拷贝到虚拟机Ubuntu的共享目录下 sudo cp samba NFS FTP sdfuse q a 将文件夹复制到 home chen 目录下 cd sdfuse q 进入sdfuse
  • 西门子PLC s7-1200学习之路

    1 Introduction 最近因为一个项目需要使用西门子PLC 买了一个入门级的PLC s7 1200 并完成了一个PLC和PC通过TCP进行通信的小程序 为了防止活干完了 内容就全忘了 所以用一个笔记进行梳理和总结 入门一种语言 需要
  • 专访蒋宇捷:技术管理者应具备哪些能力?(转载)

    摘要 近期 本站记者采访了CSDN社区活跃用户 百度技术经理蒋宇捷 他认为一个合格的技术管理者应该具备深度认知产品 冷静决策 以及良好的沟通能力 还要秉持着技术源于一线 永远不能脱离一线的观念 蒋宇捷 西安交通大学硕士 现任百度技术经理 曾
  • [系统安全] 三十九.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 水杯测试用例小记

    水杯测试用例
  • python编写数学公式-Python引入数学函数计算

    Python引入数学函数计算 在利用Python对Abaqus进行相关编程时经常需要用到数学函数 比如三角函数等 在使用这些函数之前需要先引入数学模块 Import math 之后利用时还需要利用层级关系 比如math pi表示 一个示例如
  • go: no such tool “compile“(一次糟糕体验)

    这是一次离谱问题和胡搞一通莫名解决的记录 背景 win11系统下 原有的go1 18更新到go1 19后出现了莫名的go no sucn tool compile 的情况 当时检查go env 如下 PS D Desktop gt go e