Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

 更新时间:2025年05月20日 14:14:33   作者:Hello.Reader  
这篇文章主要介绍了Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、前言

在生产环境或开发机器上,往往需要最新稳定版的 Go (Golang)以便使用最新特性。

Ubuntu 自带的 APT 源版本可能滞后,因此本文将介绍如何手动下载官方二进制包进行安装,并重点说明如何排查与解决“可执行文件格式错误”问题。

二、系统架构检测

首先,确认当前机器的 CPU 架构,以下载对应的 Go 安装包。

uname -m

常见输出及对应安装包:

  • x86_64amd64 → 下载 linux-amd64 版本
  • aarch64arm64 → 下载 linux-arm64 版本
  • i386i686 → 下载 linux-386 版本

可选:进一步确认已经解压的 Go 二进制文件架构是否与自身相符:

file /usr/local/go/bin/go
# 示例输出:ELF 64-bit LSB executable, x86-64, ... 

file 命令检测到的架构与 uname -m 不一致,则说明二进制与系统不匹配,需要重新下载正确版本。

三、卸载旧版 Go

若之前通过手动或 APT 安装过 Go,建议先彻底移除:

sudo rm -rf /usr/local/go

注意

不要忘记清理掉旧的 /usr/local/go 目录,以免新旧版本冲突。

四、下载并安装正确版本

1.获取下载链接

访问 https://go.dev/dl/,复制适合自己架构的 .tar.gz 链接。

2.下载并解压

以 Go 1.21.0、amd64 为例:

wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
rm go1.21.0.linux-amd64.tar.gz

3.验证解压结果

ls /usr/local/go/bin
# 应包含:go gofmt 等可执行文件

五、配置环境变量

在用户的 shell 配置文件中(~/.bashrc~/.zshrc 等)添加:

# Go 根目录
export GOROOT=/usr/local/go

# Go 工作区(可按需修改)
export GOPATH=$HOME/go

# 将 go 可执行文件加入 PATH
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存后使配置生效:

source ~/.bashrc

六、验证安装

  • 查看 Go 版本
go version
# 预期输出:go version go1.21.0 linux/amd64
  • 运行示例程序
mkdir -p $GOPATH/src/hello && cd $_
cat > main.go << 'EOF'
package main

import "fmt"

func main() {
    fmt.Println("Hello, Go on Ubuntu!")
}
EOF

go run main.go           # 直接运行
go build -o hello        # 编译
./hello                  # 执行

输出应为:

Hello, Go on Ubuntu!

七、常见问题及建议

“可执行文件格式错误”

  • 多因下载包架构与系统不符。
  • 务必用 uname -mfile 命令核对后,再选择下载正确的 .tar.gz

后续升级

  • 只需删除 /usr/local/go 并重新按上述步骤下载新版本,环境变量无需重复配置。

Go Modules

  • Go 1.11+ 已原生支持模块化管理,无需严格依赖 GOPATH,在项目根目录执行:
go mod init example.com/your-module

即可启用模块模式。

IDE 支持

  • 推荐使用 VS Code + Go 插件,或 GoLand 等 IDE,享受智能补全、调试与代码格式化。
  • 通过以上步骤,你即可在 Ubuntu 上获得与系统架构完全匹配的 Go 开发环境,避免“可执行文件格式错误”等常见坑。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 查看Linux OS内核与版本的几种命令分享

    查看Linux OS内核与版本的几种命令分享

    文章总结了四种在Linux操作系统中查看内核和版本的方法,并强调了个人经验的价值,鼓励大家参考和使用
    2024-11-11
  • Linux xargs kill进程 交叉查询方式

    Linux xargs kill进程 交叉查询方式

    这篇文章主要介绍了Linux xargs kill进程 交叉查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • centos6超20TB磁盘的分区格式化的示例代码

    centos6超20TB磁盘的分区格式化的示例代码

    这篇文章主要介绍了centos6超20TB磁盘的分区格式化的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • linux下yum安装时出现Loaded plugins: fastestmirror的解决办法

    linux下yum安装时出现Loaded plugins: fastestmirror的解决办法

    这篇文章主要给大家介绍了linux下yum安装时出现Loaded plugins: fastestmirror,使用 yum 出现 Loaded plugins: fastestmirror,文中有详细的解决方法,通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Ubuntu下Telnet服务器的配置方法

    Ubuntu下Telnet服务器的配置方法

    这篇文章主要介绍了Ubuntu下Telnet服务器的配置方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • CentOS7下如何配置ip forward(虚拟路由器)

    CentOS7下如何配置ip forward(虚拟路由器)

    本篇文章主要介绍了CentOS7下如何配置ip forward(虚拟路由器),非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • Tomcat中的startup.bat原理详细解析

    Tomcat中的startup.bat原理详细解析

    在windows操作系统中,我们运行tomcat只需要执行startup.bat脚本就好,这个startup.bat脚本到底是什么?下面这篇文章就来给大家详细的解析了关于Tomcat中startup.bat原理的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Apache实现本地建立泛域名虚拟主机的方法

    Apache实现本地建立泛域名虚拟主机的方法

    这篇文章主要介绍了Apache实现本地建立泛域名虚拟主机的方法,简单介绍了Apache泛域名虚拟主机的具体创建步骤与相关技巧,需要的朋友可以参考下
    2016-05-05
  • Ubuntu18.04下将 磁盘挂载在某目录下

    Ubuntu18.04下将 磁盘挂载在某目录下

    这篇文章主要介绍了Ubuntu18.04 下将磁盘挂载在某目录下,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • linux如何查看僵尸进程

    linux如何查看僵尸进程

    这篇文章主要介绍了linux如何查看僵尸进程问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论