[英]All of a sudden go tool: no such tool "compile"
我已经在我的 Ubuntu 桌面上安装了 go,在我关闭计算机之前它运行良好。
现在,当我启动我的机器并继续我的项目工作时,我得到了这个
$ 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"
当我尝试构建一个项目时。
我在 poweroff 之前做的唯一可能有一些影响的事情是使用安装 godoc
sudo apt-get install golang-doc
我通过下载go1.10.1.linux-amd64.tar.gz
文件直接安装了 go,没有使用apt-get
go 环境
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 版本
go version go1.10.1 linux/amd64
我仍然可以运行编译的 go 代码。
这里可能出了什么问题? 我该如何解决?
compile
程序应该在你的go env
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
目录中。 如果没有,请下载 Go,删除/usr/local/go
,然后重新安装 Go。
这可能看起来很奇怪,但运行export GOROOT=
为我解决了这个问题。
当我运行 go tour 时,我在 MacOS Monterey(ARM 芯片)上遇到了类似的问题,输出显示“go tool no such tool 'compile'”
我确实注意到,而不是usr/local/go/pkg/tool
中的amd_64
文件,我有这个:
/usr/local/go/pkg/tool/darwin_amd64
我尝试更改 GOTOOLDIR 变量,但仍然遇到相同的问题:
export GOTOOLDIR=/usr/local/go/pkg/tool/darwin_amd64
下载.tar.gz
与使用apt-get
可能会导致go env
值冲突/覆盖。 最好坚持一种安装方法。
我在 Mac 中遇到过类似的问题。 当我使用.dmg
安装 Go 时(类似于您的.tar.gz
案例),它为GOTOOLDIR
设置了一个完全不同的值,而当我使用brew install golang
时(类似于您的apt-get
案例)。
分析:
如果您执行以下操作:
go env | grep GOTOOLDIR
cd <value of GOTOOLDIR>
ls
您应该看到以下内容(注意compile
二进制文件):
addr2line buildid cover fix objdump test2jsonapi
cgo dist link pack trace
asm compile doc nm pprof vet
如果你不这样做,那么你可能已经切换到错误/覆盖/更早的 Go 安装。
解决方案:
升级go
后,我开始收到此错误并将 GOROOT 从/Users/bharkum3/.go
更新到/Users/bharkum3/.go/go-1.18.2
为我工作。
看起来 go install 现在正在为每个版本创建一个单独的文件夹(我猜我们的脚本正在这样做)并且需要上面的内容将编译器重定向到正确的版本。
我遇到了类似的问题,但在与 op 不同的系统上,确切地说是 windows+cygwin。
我的问题是工具文件夹中的文件未标记为可执行文件。
要解决这个问题:
chmod a+x *
在 Apple Silicon / M1 上。
您可能在.bash_profile
或 .zshrc 中手动将GOROOT
设置为类似.zshrc
GOROOT="/usr/local/opt/go/libexec"
的内容。
现在是:
export GOROOT=/opt/homebrew/opt/go/libexec
Brew 将 M1 arm 构建的目录从/usr/local/opt
更改为/opt/homebrew/opt
。
就我而言,我使用 brew 安装了一些 go 工具(brew install golangci-lint)。 这导致安装另一个 go 二进制文件。 我通过运行解决了这个问题
brew uninstall go
Ubuntu 18 具体解决方案:
golang-backports
安装了 Golang 包:sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get install golang-1.15
${HOME}/.bashrc
:export PATH=$PATH:/usr/lib/go-1.15/bin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.