gcc Golang:如何在Linux上进行交叉编译

vh0rcniy  于 2022-11-12  发布在  Go
关注(0)|答案(2)|浏览(233)

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

muk1a3rh

muk1a3rh1#

要从Linux构建到Windows,您需要将环境变量GOOS设置为Windows,将GOARCH设置为amd64
在Bash或ZSH上:

% GOOS=windows GOARCH=amd64 go build

如果你的软件包需要CGO,那么你需要使用mingw-w 64编译器:

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
cidc1ykv

cidc1ykv2#

简介

在你的生产过程中,你可能想构建你的go程序来支持windows架构,但这并不总是容易的,但这里有一个指南来帮助你构建你的windows go程序

CGO

Cgo是Go语言一个元素,它允许Go包调用C代码。
但是,你是否使用CGO并不像“我调用了C代码吗?”那么简单,因为虽然你可能没有在Go语言程序中调用C代码,但你正在使用的软件包可能会调用。
最简单的方法就是不使用this,如果不起作用,就试试第二种方法。

如果您不需要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本身支持交叉编译,你可以很容易地在其他平台上构建你的程序,进一步阅读here

如果您需要CGO

如果您需要CGO,那么构建您的程序会稍微复杂一点,因为C不支持本机跨平台编译。但是不用担心!使用MinGW64项目仍然非常容易。

要求

由于我们将使用mingw 64来构建我们的项目,我们需要确保mingw已经安装。如果没有,下面是安装的方法:
乌班图
在ubuntu上简单地运行:

sudo apt-get install gcc-mingw-w64

费多拉
在软呢帽上简单地跑:

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

相关问题