# 交叉编译

URL: https://caijiao.org/go/07-test/06-cross-compile
Source: docs/go/07-test/06-cross-compile.md
Description: 本节介绍 Go 的交叉编译功能，讲解如何生成适用于不同操作系统和架构的可执行文件。

## 1. 什么是交叉编译

交叉编译指的是在当前平台生成适用于其他平台（如不同操作系统或 CPU 架构）的可执行文件。

Go 内置强大的交叉编译支持，可通过设置环境变量实现。

## 2. 设置编译目标

通过设置 `GOOS` 和 `GOARCH` 变量指定目标平台。

常用组合如下：

| 平台          | GOOS    | GOARCH |
| ------------- | ------- | ------ |
| Windows 64 位 | windows | amd64  |
| macOS 64 位   | darwin  | amd64  |
| Linux 64 位   | linux   | amd64  |

## 3. 示例命令

编译一个 Windows 下运行的程序：

```bash
GOOS=windows GOARCH=amd64 go build -o app.exe
```

编译 Linux 平台程序：

```bash
GOOS=linux GOARCH=amd64 go build -o app
```

macOS 下编译 ARM 架构（如 M1/M2）：

```bash
GOOS=darwin GOARCH=arm64 go build -o app
```

## 4. 常见问题

- Windows 下需使用 `set` 设置环境变量，Linux/macOS 使用 `export`
- 目标平台不支持当前依赖时可能编译失败

---

交叉编译是 Go 部署和分发应用的强大工具，支持多平台构建无须额外配置。
