我阅读了this和this关于此活动的信息,并提到了该操作:
% 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.
答案 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上对其进行交叉编译的任何其他操作系统