在 Golang 里做 交叉编译(Cross Compile) 生成 Debian(Linux) 可执行文件,通常只要设置两个环境变量即可,不需要额外工具链。
在 macOS / Windows 上编译 Debian (amd64):
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app
说明:
GOOS=linux → 目标系统GOARCH=amd64 → 目标架构(Debian 常见)CGO_ENABLED=0 → 禁用 CGO,避免依赖 glibc✅ 生成的 app 可直接放到 Debian 上运行
| Debian 架构 | GOARCH |
|---|---|
| amd64 | amd64 |
| i386 | 386 |
| armhf | arm |
| arm64 | arm64 |
示例(树莓派 Debian arm64):
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o app
如果用了 CGO(如 github.com/mattn/go-sqlite3):
sudo apt install gcc-multilib
# amd64
CC=x86_64-linux-gnu-gcc \
GOOS=linux GOARCH=amd64 CGO_ENABLED=1 \
go build -o app
Debian 上安装交叉编译器:
sudo apt install gcc-x86-64-linux-gnu
sudo apt install gcc-aarch64-linux-gnu # arm64
Golang 编译的是 静态二进制(除非用 CGO),不严格区分 Debian 版本(buster / bullseye / bookworm)。
#!/bin/bash
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o release/app
在 Debian 上:
file app
./app
如果你告诉我:
我可以给你精确命令。