紀錄一下,如何在windows底下交叉編譯別的環境的執行檔(使用powershell)。
go版本1.16
公司的工作環境很複雜,有人用mac 有人用windows。
有時候又有linux環境的要求...
簡單紀錄一下 cross compiler的指令吧
1. 選擇os及cpu架構,下面列出幾個我常用到的組合。
建立環境變數再編譯(記得要到專案資料夾底下再執行喔)
注意環境變數的設定,cmd 以及powershell使用的語法不同,下面範例使用的是powershell。
Ubuntu
> $env:goos="linux"; $env:goarch="amd64"; go build .
Pi3
> $env:goos="linux"; $env:goarch="arm"; go build .
Win10
> $env:goos="windows"; $env:goarch="amd64"; go build .
2.套餐(使用批次檔)
注意:批次檔吃的是cmd語法,下列範例採用cmd的語法。
編寫一個make.bat檔放到你的Go專案資料夾下並執行。
cd %~dp0
for %%I in (.) do set CurrDirName=%%~nxI
echo %CurrDirName%
set goos=linux
set goarch=amd64
go build -o %CurrDirName%_linux_x64 .
set goos=linux
set goarch=arm
go build -o %CurrDirName%_linux_arm .
set goos=darwin
set goarch=amd64
go build -o %CurrDirName%_mac .
set goos=windows
set goarch=amd64
go build -o %CurrDirName%.exe .
3. 可接受的編譯組合
輸入下列指令可以列出所使用版本的go(1.16.3),可編譯出來的組合列表。
> go tool dist list
aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/amd64
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
illumos/amd64
ios/amd64
ios/arm64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/riscv64
linux/s390x
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
openbsd/mips64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm
參考來源: