从Windows交叉编译到其他操作系统

时间:2020-06-05 21:59:17

标签: go

我阅读了thisthis关于此活动的信息,并提到了该操作:

% env GOOS=darwin GOARCH=386 go build hello.go

// or

% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go

// and so on

但是在Windows中,没有名为env的命令,我得到了以下信息:

'env' is not recognized as an internal or external command,
operable program or batch file.

2 个答案:

答案 0 :(得分:1)

在Windows Powershell上,您应该可以执行以下操作:

$env:GOOS = "linux"
$env:GOARCH = "arm"
$env:GOARM = "7"
go build hello.go

答案 1 :(得分:0)

要检查受支持的编译工具:go tool dist list 交叉编译不适用于cgo,即不适用于任何文件都具有import "C"

在Powershell中

# For ARM
$env:GOOS = "linux" 
$env:GOARCH = "arm" 
$env:GOARM = "7" 
go build -o main main.go
# For darwin
$env:GOOS = "darwin" 
$env:GOARCH = "amd64" 
go build -o main.dmg main.go
# same for others
$env:GOOS = "windows" 
$env:GOARCH = "amd64" 
go build -o main.exe main.go

在CMD Command Prompt

set GOOS=darwin
set GOARCH=amd64
go build -o main.dmg main.go

要在Linux或Mac中进行操作并编译为Win

GOOS=windows GOARCH=amd64 go build -o main.exe main.go

交叉编译将以静默方式重建大多数标准库,因此这将非常慢。为了加快该过程,您可以在系统上安装交叉编译所需的所有标准软件包,例如,在Linux / Mac上安装windows-amd64使用的交叉编译要求:

GOOS=windows GOARCH=amd64 go install

类似于您需要在Windows上对其进行交叉编译的任何其他操作系统