编译Go源码遇building_Go_requires_Go_1_17_13_or_later错误的解决方法
问题解析与解决办法
为什么会要求Go 1.17.13及以上版本?
Go从1.5版本开始就采用自举编译(即用Go语言本身编写的编译器来编译自身源码),不再依赖C语言编译。后续每个新版本的Go源码,都会用到对应最低版本Go才支持的语言特性、编译工具链逻辑或标准库更新。你当前尝试编译的Go版本,其源码明确要求必须用Go 1.17.13或更高版本的编译器来处理,所以才会抛出这个错误。
至于Go 1.4是最后一个C编译版本的情况,那是早期Go的编译方式,现在的Go版本早已不再支持用C来编译,必须依赖符合版本要求的Go编译器完成自举。
解决步骤
- 确认目标Go版本的编译依赖:查看你要编译的Go源码中
src/cmd/dist/build.go文件,里面会明确标注编译该版本所需的最低Go版本,确保你安装的版本符合要求。 - 安装对应版本的Go:下载并安装Go 1.17.13或更高版本,配置好
GOROOT和PATH环境变量,在终端执行go version确认版本生效。 - 清理编译缓存:执行以下命令清理可能存在的缓存干扰:
go clean -cache go clean -modcache - 检查环境变量:确保没有错误设置
GOOS、GOARCH等交叉编译环境变量,避免影响编译流程。
内容的提问来源于stack exchange,提问作者Erich
相关产品推荐
相关产品推荐

