首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突然间go工具:没有这样的工具“编译”

突然间go工具:没有这样的工具“编译”
EN

Stack Overflow用户
提问于 2018-07-05 09:48:39
回答 4查看 11.8K关注 0票数 8

我已经在我的Ubuntu桌面上安装了go,在我关闭电脑之前,它工作得很好。

现在,当我启动我的机器并继续我的项目工作时,我得到了这样的结果

代码语言:javascript
复制
$ go build
go tool: no such tool "compile"
go tool: no such tool "compile"
go tool: no such tool "compile"
go tool: no such tool "compile"
go tool: no such tool "compile"

当我尝试构建一个项目时。

我在断电前做的唯一一件事可能会有一些影响,那就是用以下命令安装godoc

代码语言:javascript
复制
sudo apt-get install golang-doc

我没有使用apt-get,而是通过下载go1.10.1.linux-amd64.tar.gz文件直接安装go

转到环境

代码语言:javascript
复制
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/me/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/me/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build255010769=/tmp/go-build -gno-record-gcc-switches"

$ go版本

代码语言:javascript
复制
go version go1.10.1 linux/amd64

我仍然可以运行被破坏的go代码。

这里会出什么问题呢?我怎么才能修复它?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-05 10:34:31

compile程序应该位于您的go env GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"目录中。如果没有,请下载Go,删除/usr/local/go,然后重新安装Go。

票数 9
EN

Stack Overflow用户

发布于 2019-09-11 23:47:10

这可能看起来很奇怪,但是运行export GOROOT=为我解决了这个问题。

票数 7
EN

Stack Overflow用户

发布于 2022-02-23 22:15:57

与使用apt-get相比,下载.tar.gz可能会导致go env值冲突/覆盖。最好坚持一种安装方法。

我在Mac上也遇到过类似的问题。当我使用.dmg安装Go时(类似于您的.tar.gz案例),它为GOTOOLDIR设置了一个完全不同的值,与我使用brew install golang安装Go时(类似于您的apt-get案例)完全不同。

分析:

如果您执行以下操作:

代码语言:javascript
复制
go env | grep GOTOOLDIR
cd <value of GOTOOLDIR>
ls

您应该看到以下内容(请注意compile二进制文件):

代码语言:javascript
复制
addr2line   buildid     cover       fix     objdump     test2jsonapi        
cgo         dist        link        pack    trace
asm         compile     doc         nm      pprof       vet

如果没有,那么您可能切换到了错误的/被覆盖的/更早的Go安装。

解决方案:

  1. 如果您使用的是集成开发环境,可以很容易地在多个Go SDK之间切换,方法是转到设置或首选项。然后在集成开发环境
  2. 中重新启动终端如果你没有使用集成开发环境,一个简单的解决方案是卸载这两个Go安装。然后只使用一种方法重新安装Go。并使用相同的方法安装任何其他与Go相关的程序。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51182422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档