2017-02-10-go-叉编译

交叉编译

Linux

先执行一次生成目标系统相应的库:

cd $GOROOT/src
CGO_ENABLED=0 GOOS=[ linux | windows ... ] GOARCH=[ amd64 | 386 ] ./make.bash

比如: 编译32位windows程序

cd $GOROOT/src
CGO_ENABLED=0 GOOS=windows  GOARCH=386  ./make.bash

以后编译的时候用: CGO_ENABLED=0 GOOS=[ linux | windows ... ] GOARCH=[ amd64 | 386 ] go build *

比如: CGO_ENABLED=0 GOOS=windows GOARCH=386 go build * 注1:这种方式不支持CGO

Windows

下面以在windows64下生成windows32程序为例 生成目标系统相关的库

cd %GOROOT%/src
set CGO_ENABLED=0
set GOOS=windows
set GOARCH=386
call make.bat

要编译的时候保证环境变量里有下面的环境变量就行:

CGO_ENABLED=0
GOOS=windows
GOARCH=386

注1: 需要mingw环境 golang 下各种OS各种架构应该是可以互相交叉编译,只试了linux, windows其它没测。