Linux中的GO更新与冲突

发行版:CentOS 

GO更新

        在使用go get安装某模块时,报错:

../../pkg/mod/golang.org/x/sys@v0.5.0/unix/syscall.go:83:16: undefined: unsafe.Slice
../../pkg/mod/golang.org/x/sys@v0.5.0/unix/syscall_linux.go:2271:9: undefined: unsafe.Slice
../../pkg/mod/golang.org/x/sys@v0.5.0/unix/syscall_unix.go:118:7: undefined: unsafe.Slice
../../pkg/mod/golang.org/x/sys@v0.5.0/unix/sysvshm_unix.go:33:7: undefined: unsafe.Slice

        这个错误表明你的Go版本可能过低。unsafe.Slice是在Go 1.17中引入的。

        在CentOS上升级Go版本:
        (1)删除旧版本:

sudo yum remove golang

        (2)下载最新版本的Go(All releases - The Go Programming Languagehttps://go.dev/dl/),比如1.20.5,安装在/usr/local目录下

wget https://dl.google.com/go/go1.20.5.linux-amd64.tar.gz

        (3)解压下载的Go安装包:

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

        (4)将Go添加到PATH环境变量。在~/.bashrc~/.bash_profile文件中添加以下行(当你在 ~/.bashrc 或 ~/.bash_profile 文件中修改了配置(例如添加或更改环境变量),你需要使用 source 命令来使更改立即生效)

export PATH=$PATH:/usr/local/go/bin
source ~/.bashrc
source ~/.bash_profile

        (5)验证版本即可,GOROOT一般默认会给你按好。

go version


GO冲突

/usr/local/go/src/runtime/internal/sys/stubs.go:9:7: PtrSize redeclared in this block
/usr/local/go/src/runtime/internal/sys/arch.go:24:38: previous declaration 
/usr/local/go/src/runtime/internal/sys/stubs.go:10:24: undefined: Uintreg 
/usr/local/go/src/runtime/internal/sys/stubs.go:16:7: StackGuardMultiplier redeclared in 
this block /usr/local/go/src/runtime/internal/sys/arch.go:27:74: previous declaration

        这个错误可能是由于Go安装或环境变量设置不正确导致的。

        检查GOROOT环境变量(GOROOT 是 Go 语言安装目录的环境变量。它指向包含 Go 编译器、工具链和标准库的目录。当你使用 go buildgo run 等命令时,Go 会在 GOROOT 目录中查找所需的工具和库文件。在大多数情况下,你不需要手动设置 GOROOT,除非是自定义在非标准目录;GOPATH是放GO项目源代码的,GOPATH 包含三个子目录:srcpkg 和 bin)。

        解决:卸载原版本,重装,重设置环境变量GOROOT。

        (1)卸载当前Go版本:

sudo rm -rf /usr/local/go

        (2)下载最新版本的Go安装包(https://go.dev/dl/)。例如,对于Go 1.20.5:

wget https://dl.google.com/go/go1.20.5.linux-amd64.tar.gz

        (3)将Go安装到一个新的目录,或者还是创建usr/local/go目录安装:

cd /usr/local
sudo tar -xzf go1.20.5.linux-amd64.tar.gz

        (4)更新GOROOTPATH环境变量。在~/.bashrc~/.bash_profile文件中添加以下行

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
source ~/.bashrc
source ~/.bash_profile

        (5)查看版本OVER:

go version
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值