温馨提示×

Golang交叉编译Debian怎么设

小樊
35
2026-09-20 13:42:15
栏目: 编程语言

Golang 里做 交叉编译(Cross Compile) 生成 Debian(Linux) 可执行文件,通常只要设置两个环境变量即可,不需要额外工具链。


一、基本交叉编译(x86_64 Debian)

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 架构对照

Debian 架构 GOARCH
amd64 amd64
i386 386
armhf arm
arm64 arm64

示例(树莓派 Debian arm64):

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o app

三、需要 CGO(比如用 SQLite)

如果用了 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

四、指定 Debian 版本(不强制)

Golang 编译的是 静态二进制(除非用 CGO),不严格区分 Debian 版本(buster / bullseye / bookworm)。


五、一键脚本示例

#!/bin/bash
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o release/app

六、验证

在 Debian 上:

file app
./app

如果你告诉我:

  • 你当前系统(mac / win / linux)
  • 目标 Debian 架构(amd64 / arm64)
  • 是否用 CGO

我可以给你精确命令

0