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

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

每次try 构建程序时都会收到运行时错误:

~/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.8,buildrun都很好.

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 1.14中移动到go/src/runtime/internal/atomic/atomic_amd64.go.

提取而不清理目标目录会触发"previous declaration"错误,因为在go/src/runtime/internal/atomic/atomic_amd64x.gogo/src/runtime/internal/atomic/atomic_amd64.go中都声明了func Xchguintptr

要避免此类错误,请移除安装文件夹(/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相关问答推荐

Go 1.22 net/http群组路由

如何在定制普罗米修斯出口商中测试动态计量注册?

你能把用户界面文件中的GTK4应用程序窗口添加到GTK4应用程序中吗?

如何给杜松子wine 的路由加上一个名字,比如Laravel ?

golang regex基于关键字拆分字符串

Go-如何在递归函数中关闭通道

使用goroutines在Golang中验证 struct

「GORM错误」不支持的数据类型:&[],不正确的模式

在 Windows 11 上运行 go mod tidy 时的 gitlab 权限问题

如何解决我的 Go 聊天应用程序中 cookie 未在本地主机端口之间传输的问题?

一个Go module可以和之前的非module模块发布在同一个路径下吗?

使用 LINQ 对内部数组进行排序

我如何使用 TOML fixtures 在使用 Go Buffalo 框架的开发环境中为我的数据库 seeder ?

不能使用 mockDB(*MockDB 类型的变量)作为 struct 文字中的 *gorm.DB 值

GRPC 元数据未在 Go 中更新

NaN 是 golang 中的可比类型吗?

每次有人进入我的网站时如何运行特定功能?

转到文本/模板模板:如何根据模板本身的值数组判断值?

Golang - 使用正则表达式提取链接

Go 导入范围查找 protobuf 类型