在 macOS 上编译 Go 程序并生成 Linux x86_64 (amd64) 平台的可执行文件,可以通过 Go 内置的交叉编译功能实现。以下是具体步骤和命令:


1. 基础编译命令

直接通过环境变量指定目标平台:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp-linux-x64
  • CGO_ENABLED=0: 禁用 CGO,强制使用纯 Go 代码编译(避免依赖系统 C 库,提高可移植性)。
  • GOOS=linux: 指定目标操作系统为 Linux。
  • GOARCH=amd64: 指定目标架构为 x86_64(64 位)。
  • -o myapp-linux-x64: 输出文件名(可自定义)。

2. 需要 CGO 的情况

如果程序依赖 C 库(如使用了 SQLite、图像处理等需要 C 绑定的库),需启用 CGO 并配置交叉编译工具链:

# 安装 Linux x64 的 C 交叉编译工具链(仅需一次)
brew install FiloSottile/musl-cross/musl-cross

# 编译命令(启用 CGO,使用 musl 工具链)
CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ \
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 \
go build -ldflags="-linkmode external -extldflags=-static" -o myapp-linux-x64
  • musl-cross: 提供 Linux 兼容的 C 库编译工具。
  • -linkmode external -extldflags=-static: 强制静态链接 C 库,避免依赖目标系统的动态库。

通过上述步骤,你可以轻松在 macOS 上为 Linux x64 平台编译 Go 程序,无论是纯 Go 项目还是依赖 C 库的复杂应用。

每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2025 年 03 月 02 日
如果觉得我的文章对你有用,请随意赞赏