Linux中的GO更新与冲突

发行版:CentOS 

GO更新

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

../../pkg/mod/golang.org/x/[email protected]/unix/syscall.go:83:16: undefined: unsafe.Slice
../../pkg/mod/golang.org/x/[email protected]/unix/syscall_linux.go:2271:9: undefined: unsafe.Slice
../../pkg/mod/golang.org/x/[email protected]/unix/syscall_unix.go:118:7: undefined: unsafe.Slice
../../pkg/mod/golang.org/x/[email protected]/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 Languageicon-default.png?t=N658https://go.dev/dl/),比如1.20.5,安装在/usr/local/go目录下

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 -C go -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

你可能感兴趣的:(开发,软件下载安装,linux,golang,服务器)