在 macOS 或 Windows 上编译 Linux 可执行文件需显式设置 GOOS=linux 和 GOARCH,若启用 cgo 则需配置交叉编译工具链或禁用 cgo;推荐使用 Docker 构建以规避环境差异。Go 编译 Linux 可执行文件,直接设 GOOS 和 GOARCHGo 默认按当前系统编译,想在 macOS 或 Windows 上生成 Linux 程序,不能只靠 go build,必须显式指定目标平台。不设 GOOS=linux,编译出来的是你本地系统的二进制,扔到 Linux 上直接报 cannot execute binary file: Exec format error。实操建议:立即学习"go语言免费学习笔记(深入)";在终端里先临时设置环境变量:GOOS=linux GOARCH=amd64 go build -o myapp main.go交叉编译 ARM64 Linux(比如跑在树莓派或云服务器上):用 GOARCH=arm64,不是 arm 或 aarch64如果项目用了 cgo(比如调了 SQLite、OpenSSL),默认会失败------Linux 的 C 标准库头文件和链接器在 macOS/Windows 上不存在cgo 开启时编译 Linux 程序,得配好交叉编译工具链只要代码里有 #import "C" 或依赖含 cgo 的包(如 database/sql 配 _ "github.com/mattn/go-sqlite3"),GOOS=linux 就不够用了。这时候 Go 会尝试调用 gcc,但宿主机的 gcc 不认识 sys/stat.h 这类 Linux 头文件。实操建议:立即学习"go语言免费学习笔记(深入)";禁用 cgo 是最简方案:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp main.go启用 cgo 时,macOS 上需装 x86_64-linux-gnu-gcc(用 Homebrew:brew install x86_64-linux-gnu-binutils x86_64-linux-gnu-gcc),再设 CC_x86_64_linux_gnu=x86_64-linux-gnu-gccWindows 用户基本别硬刚 cgo 交叉编译,Docker 更稳:docker run --rm -v $(pwd):/src -w /src golang:1.22-alpine go build -o myapp main.goLinux 上运行失败?检查 libc 版本和静态链接即使成功编译出 Linux 二进制,放到旧版 CentOS 7 或 Alpine 容器里可能报 version `GLIBC_2.34' not found。这是因为 Go 默认动态链接宿主机的 libc(如果你在 Ubuntu 22.04 编译,它用的是较新 glibc)。 Mokker AI AI产品图添加背景
相关推荐
APIshop2 小时前
Python 爬虫获取京东商品详情 API 接口实战指南2501_944934732 小时前
财务岗位如何在工作中提升数据分析能力?从财务分析到经营分析这样练XmasWu12252 小时前
【Hermes Agent进阶】开发自定义技能刘~浪地球2 小时前
数据库性能优化实战2401_865439632 小时前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenlym0_493934532 小时前
CSS如何实现输入框禁用样式_使用-disabled伪类设定m0_716430072 小时前
如何用 classList.toggle 实现侧边栏菜单的点击展开与收起爪洼传承人2 小时前
AI工具MCP的配置,慢sql优化Destiny_where2 小时前
Langgraph基础(4)-中断interrupt.实现图执行的动态暂停与外部交互