You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 24.04升级软件包后编译Go包时出现GCC汇编器段错误

Ubuntu 24.04升级软件包后编译Go包时出现GCC汇编器段错误

看起来你遇到的是Ubuntu 24.04升级软件包后,GCC在编译Go的runtime/cgo组件时触发了内部段错误,这确实挺闹心的。我来给你几个针对性的排查和解决思路,你可以一步步试:

1. 先排查GCC版本问题

升级软件包最容易碰到的就是编译器版本引入了bug,你可以先:

  • 查看当前GCC版本:
    gcc --version
    
  • 如果是刚升级到某个新版本(比如gcc-14的某个测试小版本),建议降级到稳定版(比如gcc-13):
    sudo apt install gcc-13
    sudo update-alternatives --config gcc
    
    然后在弹出的选项里选gcc-13的编号,设置为默认编译器。
  • 如果当前版本本身是旧版,试试升级到最新的稳定补丁版:
    sudo apt update && sudo apt install --only-upgrade gcc
    

2. 临时禁用CGO绕过错误

既然错误出在CGO编译环节,如果你只是需要快速安装staticcheck或者运行Go代码,可以临时关闭CGO:

CGO_ENABLED=0 go install -v honnef.co/go/tools/cmd/staticcheck@latest

这个方法能快速解决临时需求,但如果你的项目必须依赖CGO,还是得解决GCC的根本问题。

3. 重新安装Go语言环境

虽然你的Go版本是1.25.1,但系统升级有可能意外损坏了GOROOT里的runtime/cgo相关文件,重新安装Go试试:

  • 先卸载当前Go:
    sudo rm -rf /usr/local/go
    
  • 下载对应版本的Go包(比如go1.25.1的amd64版),解压到/usr/local/go
    wget https://dl.google.com/go/go1.25.1.linux-amd64.tar.gz
    sudo tar -C /usr/local -xzf go1.25.1.linux-amd64.tar.gz
    
  • 确保你的PATH环境变量包含/usr/local/go/bin(如果之前配置过就不用改)

4. 检查底层工具链的兼容性

Ubuntu的包升级可能连带更新了binutils、glibc这类底层库,它们也可能和GCC/Go冲突:

  • 检查binutils版本:
    ld --version
    
  • 尝试升级或重新安装binutils:
    sudo apt install --only-upgrade binutils
    # 或者重新安装
    sudo apt reinstall binutils
    

5. 提交GCC bug报告(万不得已时)

错误提示明确说这是GCC的内部段错误,属于编译器自身的bug。如果以上方法都没用,你可以提交bug报告:

  • 先单独运行触发错误的那个GCC命令(就是你找到的编译gcc_linux_amd64.c的命令),保存完整输出
  • gcc -v获取详细版本信息
  • 可以直接用Ubuntu的bug报告工具提交,它会自动收集系统信息:
    ubuntu-bug gcc
    

另外你已经试过清除~/.cache/go-build,这个操作是对的,但因为问题出在GCC层面,所以这个缓存不背锅~ 先从上面的方法一步步试,应该能解决问题。

火山引擎 最新活动