[英]Golang: How to cross compile on Linux for Windows
如何在 Linux 上交叉编译 Go 项目以生成在 Windows 上运行的可执行文件?
要从 Linux 构建到 Windows,您需要将环境变量GOOS
设置为Windows
并将GOARCH
为amd64
。
在 Bash 或 ZSH 上:
% GOOS=windows GOARCH=amd64 go build
如果你的包需要CGO
,那么你需要使用 mingw-w64 编译器:
sudo apt-get install gcc-multilib
sudo apt-get install gcc-mingw-w64
GOOS=windows GOARCH=386 \
CGO_ENABLED=1 CXX=i686-w64-mingw32-g++ CC=i686-w64-mingw32-gcc \
go build
在您的生产过程中,您可能希望构建您的 go 程序以支持 windows 架构,但这并不总是那么容易,但这里有一个指南可以帮助您构建适用于 windows 的 go 程序
Cgo 是 go 的一个元素,它允许 Go 包调用 C 代码。
但是天气你是否使用 CGO 并不像“我调用 C 代码吗?”那么简单。 因为虽然您可能没有在 Go 程序中调用 C 代码,但您正在使用的包可能会调用。
要弄清楚最简单的方法是尝试不使用,如果它不起作用,请尝试第二个选项。 (但如果你愿意,你也可以试试这个)
如果您不需要 CGO,将您的 go 程序构建到另一个平台非常容易,因为 go 原生支持跨平台编译。 您需要做的就是:
x64
#Compile your go program to the windows x64 platform
env GOOS=windows GOARCH=amd64 go build package-import-path
x32
#Compile your go program to the windows x32 platform
env GOOS=windows GOARCH=386 go build package-import-path
提示:由于 go 原生支持交叉编译,您也可以轻松地将程序构建到其他平台,进一步阅读这里
如果你需要 CGO,构建你的程序会有点复杂,因为 C 不支持本地跨平台编译。但不要担心! 使用MinGW64项目仍然很容易。
由于我们将使用 mingw64 来构建我们的项目,因此我们需要确保安装了 mingw。 如果它不是这里是你如何安装它:
在 ubuntu 上只需运行:
sudo apt-get install gcc-mingw-w64
在 fedora 上简单地运行:
sudo dnf install mingw64-gcc
现在我们满足了要求,我们现在可以构建我们的项目
要在 windows x64 架构上构建程序,请运行:
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build package-import-path
要在 windows x32 架构上构建程序,请运行:
GOOS=windows GOARCH=386 CGO_ENABLED=1 CXX=i686-w64-mingw32-g++ CC=i686-w64-mingw32-gcc go build package-import-path
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.