Golang 在 Ubuntu 上编译流程是什么:从安装环境到生成可执行文件

Finn
Finn
发布时间:2026-08-22| 198人浏览过
原创

前言

在 Ubuntu 上编译 Go 程序,真正容易出错的地方通常不是语法,而是安装方式怎么选、环境变量该配到哪里、`go build` 和 `go run` 各自适合什么场景。下面按实际操作顺序把这套流程拆开说明,你可以据此快速搭好环境,也能判断自己是该用 APT 直接安装,还是走源码编译这条更灵活的路径。

很多人第一次在 Ubuntu 上跑 Go,卡住的往往不是写代码,而是安装路径、环境变量和编译命令到底该怎么接起来。下面按“先装环境,再建项目,最后编译运行”的顺序梳理一遍,同时保留 APT 安装和源码编译两种方案,方便你根据版本需求和使用场景做判断。

先把 Go 环境装好

在 Ubuntu 上安装 Go,常见做法主要有两种:一种是直接用 APT,速度快、步骤少;另一种是从源码编译,适合需要特定版本或希望自行控制编译过程的场景。

Go 在 Ubuntu 上的安装方式与后续配置关系图
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 的编译方式并不复杂,但不同命令对应的使用场景不一样,最好分开理解。

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 这条路径已经足够;只有在版本控制或定制化要求更高时,才需要考虑源码编译。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。