Golang编译错误:版本"go1.13"与go工具版本"go1.13.8"不匹配
Golang编译错误:版本"go1.13"与go工具版本"go1.13.8"不匹配 我是一个Go语言新手 尝试在我的Mac上进行构建 遇到了这个错误,我已经通过brew卸载并重新安装了Go
prometheus-exporter-netapp (master) $ make
/Library/Developer/CommandLineTools/usr/bin/make clean
rm -rf target
/Library/Developer/CommandLineTools/usr/bin/make build-all
/Library/Developer/CommandLineTools/usr/bin/make build-darwin
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -a -tags netgo -ldflags ‘-w’ -o target/darwin/prometheus-exporter-netapp
unicode/utf8
编译:版本 “go1.13” 与 go 工具版本 “go1.13.8” 不匹配
encoding
编译:版本 “go1.13” 与 go 工具版本 “go1.13.8” 不匹配
gitlab $ echo $PATH
/Users/mark.pendrick/gocode/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
gitlab $ echo $GOPATH
/Users/mark.pendrick/gocode
gitlab $
更多关于Golang编译错误:版本"go1.13"与go工具版本"go1.13.8"不匹配的实战教程也可以访问 https://www.itying.com/category-94-b0.html
为什么不从 https://golang.org/dl/ 安装 Go?
更多关于Golang编译错误:版本"go1.13"与go工具版本"go1.13.8"不匹配的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
很可能你的系统上安装了两个标准库,一个来自原始的Go安装,另一个来自brew安装。Go工具使用$GOROOT来查找标准库,显然$GOROOT指向了错误的位置。
- 运行
go env GOROOT。对于通过Homebrew安装的Go,它应该指向/usr/local/Cellar/go/1.13.8/libexec。如果不是,请相应地修改你shell中的GOROOT环境变量,然后看看错误是否消失。 - 通常,你会希望移除旧Go安装的所有残留文件。
brew install go不会自动卸载其他(即:非brew)的Go安装。
另请参阅:
(通过网页搜索找到:"compile: version" "does not match go tool version")
@lutzhorn 通过brew安装Go本身并没有什么问题。我使用brew安装Go已经很多年了,并且一直用得很愉快 🙂
这个问题是由于系统中存在多个Go版本导致的版本不匹配。错误信息显示编译器期望的是go1.13,但实际找到的是go1.13.8。
首先检查系统中安装的Go版本:
# 查看当前使用的Go版本
go version
# 查看所有已安装的Go版本位置
which -a go
通常这个问题是因为通过多种方式安装了Go(比如brew和官方安装包)。需要清理旧的Go安装:
# 1. 完全卸载brew安装的Go
brew uninstall --force go
brew cleanup
# 2. 删除可能存在的其他Go安装
sudo rm -rf /usr/local/go
sudo rm -rf /usr/local/bin/go
# 3. 清理GOPATH中的旧版本缓存
rm -rf $GOPATH/pkg
# 4. 重新安装Go(选择一种方式)
# 方式A:使用brew重新安装
brew install go
# 方式B:或从官网下载安装
# 访问 https://golang.org/dl/ 下载安装包
如果问题仍然存在,检查环境变量:
# 查看GOROOT设置
echo $GOROOT
# 临时清除GOROOT(如果设置了错误的路径)
unset GOROOT
# 确保PATH正确,Go的bin目录应该在PATH中
export PATH="/usr/local/go/bin:$PATH"
对于Makefile项目,可以尝试强制使用特定版本:
# 在Makefile中添加版本检查
GO_VERSION := $(shell go version | cut -d' ' -f3)
# 或者在构建时指定
go build -a -tags netgo -ldflags '-w' -o target/darwin/prometheus-exporter-netapp
如果项目使用了go modules,清理mod缓存:
go clean -modcache
最后验证安装:
# 确认版本一致
go version
go env GOVERSION
这两个命令应该输出相同的版本号。如果仍然不匹配,可能是系统中残留了旧的Go安装文件,需要手动查找并删除:
# 查找所有go可执行文件
find /usr/local -name "go" -type f 2>/dev/null
find /usr -name "go" -type f 2>/dev/null

