Golang执行go命令时出现Segmentation fault (core dumped)错误如何解决

Golang执行go命令时出现Segmentation fault (core dumped)错误如何解决 我在 Linux Mint 上安装了 Go 1.12.9。对于任何 Go 命令(例如 go buildgo rungo versiongo env),我都会收到“Segmentation fault (core dumped)”的消息。我已经尝试过卸载然后重新安装 Go,但这没有帮助。如果有人有任何建议,我将不胜感激。

谢谢。

7 回复

which go 命令会返回什么结果?

更多关于Golang执行go命令时出现Segmentation fault (core dumped)错误如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你是怎么安装 Go 的?

看起来你的路径中似乎残留了之前安装的 go 二进制文件,请确保完全卸载之前的安装。

作为一种变通方法,将手动安装的 go 放在 PATH 的最前面而不是最后面可能会起作用:

export PATH=/usr/local/go/bin:$PATH:$GOPATH/bin

/usr/bin/go

道格拉斯·阿特金森副教授 | 计算机科学与信息技术系

塔兰特县学院,东北校区 | NTAB 2209A

828 Harwood Rd | Hurst TX 76054

(817) 515-6193 | 传真 (817) 515-6553

douglas.atkinson@tccd.edu

谢谢。这个方法有效。我将彻底删除之前的安装。非常感谢您在这件事上的帮助。

道格拉斯·阿特金森副教授 | 计算机科学与信息技术系

塔兰特县学院,东北校区 | NTAB 2209A

828 Harwood Rd | Hurst TX 76054

(817) 515-6193 | 传真 (817) 515-6553

douglas.atkinson@tccd.edu

我执行了一系列命令行操作:

cd ~/Downloads
wget –c https://storage.googleapis.com/goland/go1.12.9.linux-amd64.tar.gz
tar –xvf gl1.12.9.linux-amd64.tar.gz
sudo chown –R root:root ./go
sudo mv go /usr/local
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

这就是我第二次安装的方式。第一次安装时,我记得使用的是软件管理器。它原本运行正常,我也一直在顺利使用,直到突然收到“Segmentation fault”错误信息。于是,我卸载了Golang,然后使用上述方法重新进行了安装。

这是一个典型的Go运行时问题,通常与系统环境或Go安装损坏有关。以下是排查步骤:

1. 检查系统依赖

确保系统有必要的C库依赖:

ldd $(which go)

检查输出中是否有"not found"的库。

2. 验证Go安装完整性

手动下载并验证Go二进制包:

# 移除现有安装
sudo rm -rf /usr/local/go

# 下载官方二进制包
wget https://golang.org/dl/go1.12.9.linux-amd64.tar.gz

# 验证SHA256
echo "ac2a6efcc1f5ec8bdc0db0a988bb1d301d64b6d61b7e8d9e42f662fbb75a2b9b go1.12.9.linux-amd64.tar.gz" | sha256sum -c

# 解压到/usr/local
sudo tar -C /usr/local -xzf go1.12.9.linux-amd64.tar.gz

3. 设置环境变量

确保GOROOT和PATH正确设置:

# 在~/.profile或~/.bashrc中添加
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH

# 重新加载配置
source ~/.bashrc

4. 运行最小测试程序

创建简单的Go程序测试:

// test.go
package main

import "fmt"

func main() {
    fmt.Println("Go test successful")
}

运行:

go run test.go

5. 检查系统内存和栈限制

# 检查栈大小限制
ulimit -s

# 临时增加栈大小(如果需要)
ulimit -s unlimited

6. 使用GOTRACEBACK调试

GOTRACEBACK=crash go version

这会提供更详细的崩溃信息。

7. 检查系统架构兼容性

# 确认系统架构
uname -m

# Go 1.12.9需要x86_64架构
# 如果是32位系统,需要下载386版本

如果问题仍然存在,可能是系统库冲突或内核问题。尝试:

# 使用strace跟踪系统调用
strace -f go version 2>&1 | tail -50

或者安装更新版本的Go(如1.13+),因为Go 1.12.9较旧,可能与新系统存在兼容性问题。

回到顶部