Go版本升级后编译出错:Load redeclared in this block

2020/10/14 13:36
阅读数 1.5K

今天打算把Go由1.11.4升级到1.15.2,升级的方法就两步,

先上Go官方下载页面( https://golang.org/dl/ )下载windows对应的压缩包

下载好后把压缩包解压到相应的目录:
覆盖安装就可以了
因为是升级,不是初次安装,之前已经把PATH设置好了,就不用管了。

之后执行以下命令,查看Go版本:

E:\GO2\src>go version
go version go1.15.2 windows/amd64

看到已经是1.15.2了,以为任务结束了。

但是用Go编译自己的程序,输出一大段如下错误:


# runtime/internal/atomic
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:13:6: Load redeclared in this block  
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:19:6: Loadp redeclared in this block
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:22:32
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:28:26
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:30:6: Xadd redeclared in this block
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:39:37
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:33:6: Xadd64 redeclared in this block        
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:42:39
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:36:6: Xadduintptr redeclared in this block   
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:45:47
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:48:36
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:42:6: Xchg64 redeclared in this block        
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:45:6: Xchguintptr redeclared in this block   
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:54:45
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:48:6: And8 redeclared in this block
        previous declaration at C:\Go\src\runtime\internal\atomic\atomic_amd64.go:63:27
C:\Go\src\runtime\internal\atomic\atomic_amd64x.go:48:6: too many errors

错误提示中说,atomic中的很多内容都重定义了,打开目录/go/src/runtime/internal/atomic下的atomic_amd64x.go和atomic_amd64.go,发现内容相近。

猜想可能新版本的源码文件名变更了,由于我们的新版本是直接解压过去的,导致老版本和新版本的源码文件同时存在。

所以直接不覆盖安装了,把老文件夹里的东西都删了,然后装新的。

之后用Go编译程序就没有错误了。

总结一下,安装Go时,如果选择安装在老版本目录,最好先把老版本完整删除掉。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部