温馨提示×

Golang在Ubuntu上的编译流程是怎样的

小樊
44
2025-11-14 21:10:12
栏目: 编程语言

在 Ubuntu 上编译 Golang 程序的标准流程

一 安装与准备

  • 更新索引并安装 Go(两种常用方式,二选一):
    • 使用发行版仓库安装:sudo apt update && sudo apt install -y golang
    • 使用官方二进制包安装(示例为 go1.22.0,可按需替换版本): wget https://golang.google.cn/dl/go1.22.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
  • 配置环境变量(写入 ~/.bashrc 或 /etc/profile 并 source 使其生效): export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  • 验证安装:go version(应输出版本与平台,如:go1.22.0 linux/amd64)

二 项目初始化与代码

  • 进入项目目录(Go 模块方式,推荐): cd /path/to/your/project go mod init your-module-name
  • 示例 main.go: package main import “fmt” func main() { fmt.Println(“Hello, Ubuntu”) }
  • 说明:使用 Go 模块(go.mod)管理依赖,无需再手动维护 GOPATH 工作区布局

三 本地编译与运行

  • 编译为当前平台可执行文件: go build -o app main.go 或直接 go build(二进制名默认与目录名或包名一致)
  • 运行: ./app
  • 常用构建选项:
    • -o :指定输出文件名
    • -v:显示构建过程包信息
    • -ldflags “-s -w”:去除符号表与调试信息,减小体积(发布常用)

四 交叉编译与多架构产物

  • 交叉编译为 Linux 目标(在 Ubuntu 上也可生成其他平台的可执行文件):
    • Linux amd64:GOOS=linux GOARCH=amd64 go build -o app-linux-amd64 main.go
    • Linux arm64:GOOS=linux GOARCH=arm64 go build -o app-linux-arm64 main.go
    • Windows amd64:GOOS=windows GOARCH=amd64 go build -o app.exe main.go
    • macOS amd64:GOOS=darwin GOARCH=amd64 go build -o app-darwin-amd64 main.go
  • 提示:交叉编译时无需在目标平台运行构建,但请确保代码未依赖特定平台的 C 库或系统调用

五 部署与常见问题

  • 部署到目标服务器: scp app user@server:/opt/app/ ssh user@server “chmod +x /opt/app/app && /opt/app/app”
  • 常见问题与处理:
    • 权限问题:确保目标目录可写,必要时使用 chmod +x 赋予可执行权限
    • 交叉编译后无法运行:核对 GOOS/GOARCH 是否匹配目标平台与架构
    • 动态库依赖报错:Go 默认静态链接,若使用了 CGO 或依赖 C 库,需安装相应运行库,或改为纯 Go 实现/静态编译配置

0