登录
首页 >  Golang >  Go问答

Go 1.14构建时出现的"先前声明位于"运行时内部错误是由升级时Go 1.13带来的什么问题引起的?

来源:stackoverflow

时间:2024-03-08 17:15:25 186浏览 收藏

你在学习Golang相关的知识吗?本文《Go 1.14构建时出现的"先前声明位于"运行时内部错误是由升级时Go 1.13带来的什么问题引起的?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

将我的 go 安装文件夹升级到 go 1.14

sudo tar -c /usr/local -xzf go1.14.linux-amd64.tar.gz

每次尝试构建程序时,我都会收到运行时错误:

~/playground/go/src/hello  go build hello
# runtime/internal/atomic
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:18:6: load redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:16:24
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:24:6: loadp redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:22:32
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:30:6: load64 redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:28:26
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:36:6: loadacq redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:34:27
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:41:6: xadd redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:39:37
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:44:6: xadd64 redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:42:39
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:47:6: xadduintptr redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:45:47
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:50:6: xchg redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:48:36
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:53:6: xchg64 redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:51:38
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:56:6: xchguintptr redeclared in this block
    previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:54:45
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:56:6: too many errors

我尝试降级到版本 1.13.8buildrun 一切正常。

sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.13.8.linux-amd64.tar.gz

~  go version
go version go1.13.8 linux/amd64

~/go  go build hello && go run hello
hello, world

我的操作系统是 linux mint 19.2。


解决方案


此错误是可重现的,当目标目录已用于较旧的 go 安装并且某些文件已被重命名(与以前的版本相比)时,就会发生此错误。

例如:

go 1.13.8 中,文件 go/src/runtime/internal/atomic/atomic_amd64x.go 已移至 中的 go/src/runtime/internal/atomic/atomic_amd64.go转到 1.14

在不清理目标目录的情况下提取会触发“先前声明”错误,因为 func xchguintptrgo/src/runtime/internal/atomic/atomic_amd64x.gogo/src/runtime/internal/ 中声明原子/atomic_amd64.go

为避免此类错误,请删除安装文件夹 (/usr/local/go) 并重新安装 go 1.14

sudo rm -rf /usr/local/go && sudo tar -c /usr/local -xzf go1.14.linux-amd64.tar.gz

再次测试:

~/go/src/hello  go version
go version go1.14 linux/amd64
~/go/src/hello  go build hello && go run hello
hello, world

理论要掌握,实操不能落!以上关于《Go 1.14构建时出现的"先前声明位于"运行时内部错误是由升级时Go 1.13带来的什么问题引起的?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>