如何解决Go交叉编译darwin 386时报错不支持编译对的问题?
交叉编译报错 darwin/386 不兼容问题解答
直接原因
你当前使用的 Go 1.15及更高版本的官方工具链,已经完全移除了对 darwin/386 编译目标的支持,这个报错和你执行编译的主机是Linux、还是Windows没有任何关系,是工具链本身的目标支持列表里没有这个配对了。
跟进这个调整的背景:苹果在macOS 10.15版本就终止了全系统对32位Intel架构应用的运行支持,Go官方同步跟进在1.15版本砍掉了这个几乎无实际使用场景的编译目标,后续所有新版本都不会再恢复。
你可正常编译的目标参考
- windows/386、linux/386:这两个32位目标目前仍在Go官方的长期支持列表中,没有被废弃
- darwin/amd64:对应64位Intel架构的macOS,是当前仍被正常支持的darwin平台主流编译目标
对应解决方向
- 如果业务确实需要产出适配32位macOS的可执行文件,需要降级安装 Go 1.14 及更早的版本,这类旧版本工具链还保留了darwin/386的编译规则,直接用你写的那行编译命令即可正常完成交叉编译。
- 如果只是误判了支持范围,建议直接调整编译参数为darwin平台的64位目标,适配当前所有主流macOS的使用场景,32位macOS现在已经没有实际终端用户存量。
实操验证:你可以直接执行
go tool dist list命令,导出当前Go版本所有支持的GOOS/GOARCH合法配对,不在这个列表里的组合执行编译一定会抛出不支持的报错,不需要额外安装任何交叉编译配置、组件。
内容的提问来源于stack exchange,提问作者vqx46
相关产品推荐
相关产品推荐

