使用 golang 的交叉编译生成 windows 可执行文件

发布时间: 2020-07-03 09:54:46 作者: 大象笔记

需求场景

公司内部的 IT 似乎不会使用 Linux,所以要交接的一个 golang gin 服务,我就不太敢部署在 Linux 上,想试试能否生成 windows 版本,然后设置成开机自启动,这样就不用操心了。

即,在我的 Windows 10 WSL Ubuntu 开发环境下,编译出可以在 Windows 10 上运行的 Golang 二进制文件。

交叉编译

英文为 Cross Compiling。

交叉编译器(英语:Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台的可执行文件的编译器。

还是翻译成“跨平台编译”比较好,“交叉”这个词太难理解了。

跨平台编译的意义

Golang 的 Cross Compiling

跨平台编译选项:

示例:

$ env GOOS=windows GOARCH=amd64 go build github.com/mholt/caddy/caddy

真实项目编译

以一个 golang gin web 服务为例:

在 Ubuntu 下执行

env GOOS=windows GOARCH=amd64 go build -o sunzhongwei.exe

然后将这个文件复制到 Windows 目录下,在 PowerShell 中执行

PS D:\to_del> .\sunzhongwei.exe

访问、操作一切正常。golang 的跨平台编译确实方便。

GOARCH 中 386 与 amd64 的区别

兼容性问题

有些三方库用到了 cgo,无法在 windows 下使用。所以,尽量使用标准库,避免兼容性问题。

参考

我是一名山东烟台的开发者,联系作者