跳到主要内容

Go 项目打包不同平台和版本

· 阅读需 2 分钟
素明诚
Full stack development

在 Windows 上打包 Windows 版本

go build -o xApp-windows.exe

在 macOS 上打包 macOS 版本

go build -o xApp-macos

在 Linux 上编译 x86 版本

GOARCH=amd64 go build -o xApp-linux-x86

在 Linux 上编译 ARM 版本

GOARCH=arm64 go build -o xApp-linux-arm

Windows 32 位

如果你需要支持 32 位的 Windows 系统,你可以使用 GOARCH=386 来编译 32 位版本的可执行文件。

SET GOARCH=386&& go build -o xApp-windows-32bit.exe

macOS ARM 架构(Apple Silicon)

对于采用 Apple Silicon(M1 芯片)的 macOS 设备,你可以使用 GOARCH=arm64 来编译适用于 ARM 架构的 macOS 可执行文件。

GOOS=darwin GOARCH=arm64 go build -o xApp-macos-arm

CGO 和交叉编译

如果你的 Go 项目使用了 CGO(调用 C 代码),交叉编译可能会更加复杂。你可能需要安装目标平台的 C 编译器和相关工具链。

在这种情况下,你可能需要使用 Docker 来设置适当的交叉编译环境。

外部依赖和静态链接

如果你的项目依赖于外部 C 库,你可能需要考虑静态链接这些库,以确保在目标系统上的可移植性。

你可以使用 -ldflags "-linkmode external -extldflags -static" 标志来实现静态链接。

go build -ldflags "-linkmode external -extldflags -static" -o xApp