[英]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.