很多人第一次在 Ubuntu 上跑 Go,卡住的往往不是写代码,而是安装路径、环境变量和编译命令到底该怎么接起来。下面按“先装环境,再建项目,最后编译运行”的顺序梳理一遍,同时保留 APT 安装和源码编译两种方案,方便你根据版本需求和使用场景做判断。
先把 Go 环境装好
在 Ubuntu 上安装 Go,常见做法主要有两种:一种是直接用 APT,速度快、步骤少;另一种是从源码编译,适合需要特定版本或希望自行控制编译过程的场景。

方式一:通过 APT 安装
如果只是日常开发或快速搭环境,直接使用系统包管理器通常最省事:
sudo apt update
sudo apt install golang-go
这条路径适合大多数入门和常规开发场景,安装完成后可以继续配置环境变量并验证版本。
方式二:从源码编译安装
如果你需要特定版本,或者希望了解 Go 本身在 Ubuntu 上的构建方式,可以走源码编译流程。
先安装依赖工具:
sudo apt update
sudo apt install -y git gcc make
然后克隆 Go 官方源码仓库:
git clone https://github.com/golang/go.git
cd go/src
接着设置编译 Go 自身要用到的环境变量:
export GOROOT_BOOTSTRAP=$(pwd)/../..
export PATH=$GOROOT_BOOTSTRAP/bin:$PATH
最后执行源码编译:
cd $GOROOT
./all.bash
按原始流程说明,编译完成后,Go 会安装在 $HOME/go 目录(源码编译方式)或 /usr/local/go 目录(APT 安装方式)。
安装后还要配置哪些环境变量
无论你使用哪种安装方式,环境变量都要补齐,否则系统可能找不到 go 命令,项目依赖和二进制输出目录也不够清晰。
打开 ~/.bashrc 或 ~/.profile,加入以下配置:
export PATH=$PATH:/usr/local/go/bin # 替换为源码编译的安装路径(如$HOME/go/bin)
export GOPATH=$HOME/go # 设置工作目录(存放代码和依赖)
export GOBIN=$GOPATH/bin # 设置二进制文件输出目录
export GO111MODULE=on # 启用Go Modules(推荐,管理依赖)
保存后让配置立即生效:
source ~/.bashrc
# 或 source ~/.profile
然后检查 Go 是否已经可用:
go version
如果输出类似 go version go1.21.0 linux/amd64,说明当前环境已经准备完成。
创建项目并写一个最小示例
环境准备好后,可以先建一个最小项目,顺便把 Go Modules 的基本流程跑通。
先创建项目目录:
mkdir -p $GOPATH/src/myproject
cd $GOPATH/src/myproject
初始化模块,生成 go.mod:
go mod init myproject
然后创建 main.go,写一个最简单的可执行程序:
package main
import "fmt"
func main() {
fmt.Println("Hello, Ubuntu Golang!")
}
到这里,项目结构已经具备,接下来就可以直接编译。
Ubuntu 上常用的 Go 编译命令
Go 的编译方式并不复杂,但不同命令对应的使用场景不一样,最好分开理解。

编译单个文件
如果你只是测试一个独立文件,可以在 main.go 所在目录直接执行:
go build main.go
生成的可执行文件默认命名为 main,在 Windows 下则是 main.exe。
编译整个项目
如果当前目录已经包含 go.mod,通常更推荐在项目根目录直接运行:
go build
这样会连同项目依赖一起处理,并生成可执行文件,更适合真实项目开发。
交叉编译到其他平台
当你需要把程序部署到别的环境时,可以直接指定目标平台参数。比如为 Linux 64 位系统编译,且不启用 CGO:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myproject-linux
生成的 myproject-linux 可以直接放到 Linux 服务器上运行。
编译后怎么运行和验证结果
使用 go build 之后,直接执行生成的二进制文件即可:
./main
# 或 ./myproject-linux(交叉编译后的文件)
正常情况下会输出:
Hello, Ubuntu Golang!
如果你只是想临时验证代码,不打算先生成可执行文件,也可以直接运行:
go run main.go
go run 更适合开发阶段快速测试,go build 则适合生成明确可交付的二进制文件。
需要第三方库时怎么处理依赖
项目中引入第三方库时,可以继续使用 Go Modules 管理依赖。最直接的方式就是通过 go get 拉取模块,例如:
go get github.com/gin-gonic/gin # 示例:下载Gin框架
执行后,相关依赖会自动写入 go.mod。后续再运行 go build 或 go run 时,Go 会根据模块信息自动处理依赖关系,不需要再手动整理。
把整套流程串起来看
把整套过程压缩来看,Ubuntu 上编译 Go 程序基本就是五步:安装 Go、配置环境变量、初始化项目、执行编译、运行验证。对大多数场景来说,APT 安装加 go mod init、go build 这条路径已经足够;只有在版本控制或定制化要求更高时,才需要考虑源码编译。









