Go 编译代码-分平台编译

扫测资讯 2024-11-21 00:07   3 0

要针对 Mac, Linux, 和 Windows 编译单个 main.go 文件,可以使用 Go 的交叉编译功能,通过设置环境变量 GOOS GOARCH 来指定目标操作系统和架构。

编译命令

在项目目录下执行以下命令:

1. MacOS 编译
GOOS=darwin GOARCH=amd64 go build -o main_mac main.go

或对于 Apple Silicon 芯片 (M1/M2):

GOOS=darwin GOARCH=arm64 go build -o main_mac_arm main.go
2. Linux 编译
GOOS=linux GOARCH=amd64 go build -o main_linux main.go
3. Windows 编译
GOOS=windows GOARCH=amd64 go build -o main_windows.exe main.go

说明

  1. 输出文件名称
    • -o 参数指定输出文件的名称。例如 main_mac 表示 MacOS 平台的二进制文件。
    • Windows 文件通常使用 .exe 扩展名。
  1. 架构支持
    • GOARCH=amd64 表示 64 位架构。如果需要支持 32 位架构,可以改为 GOARCH=386
  1. 交叉编译环境
    • Go 自带交叉编译支持,运行这些命令不需要安装额外工具。
  1. 验证编译环境
    • 如果需要查看当前支持的所有目标操作系统和架构组合,可以运行:
go tool dist list

示例:批量编译脚本

一个简单的 shell 脚本 build_all.sh ,一键生成所有目标文件:

#!/bin/bash

echo "Building for MacOS (amd64)..."
GOOS=darwin GOARCH=amd64 go build -o main_mac main.go

echo "Building for MacOS (Apple Silicon)..."
GOOS=darwin GOARCH=arm64 go build -o main_mac_arm main.go

echo "Building for Linux (amd64)..."
GOOS=linux GOARCH=amd64 go build -o main_linux main.go

echo "Building for Windows (amd64)..."
GOOS=windows GOARCH=amd64 go build -o main_windows.exe main.go

echo "Builds completed!"