繁体   English   中英

Golang:如何在 Linux for Windows 上交叉编译

[英]Golang: How to cross compile on Linux for Windows

如何在 Linux 上交叉编译 Go 项目以生成在 Windows 上运行的可执行文件?

要从 Linux 构建到 Windows,您需要将环境变量GOOS设置为Windows并将GOARCHamd64

在 Bash 或 ZSH 上:

% GOOS=windows GOARCH=amd64 go build
  • 有关更多详细信息,请参阅: https ://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5
  • 此处提供了 GOOS 和 GOARCH 可能值的描述: https ://golang.org/doc/install/source#environment

如果你的包需要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

Cgo 是 go 的一个元素,它允许 Go 包调用 C 代码。

但是天气你是否使用 CGO 并不像“我调用 C 代码吗?”那么简单。 因为虽然您可能没有在 Go 程序中调用 C 代码,但您正在使用的包可能会调用。

要弄清楚最简单的方法是尝试不使用,如果它不起作用,请尝试第二个选项。 (但如果你愿意,你也可以试试这个

如果你不需要 CGO

如果您不需要 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

如果你需要 CGO,构建你的程序会有点复杂,因为 C 不支持本地跨平台编译。但不要担心! 使用MinGW64项目仍然很容易。

要求

由于我们将使用 mingw64 来构建我们的项目,因此我们需要确保安装了 mingw。 如果它不是这里是你如何安装它:

Ubuntu

在 ubuntu 上只需运行:

sudo apt-get install gcc-mingw-w64

软呢帽

在 fedora 上简单地运行:

sudo dnf install mingw64-gcc

建造

现在我们满足了要求,我们现在可以构建我们的项目

适用于 windows x64 架构

要在 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 架构

要在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM