1
2
3
4
### linux 64bit
GOOS=linux GOARCH=amd64 go build .
# 编译到 windows 64bit
GOOS=windows GOARCH=amd64 go build

linux 64bit, windows编译 Linux 64bit

1
2
3
4
sET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build

arm

1
gOOS=linux GOARCH=arm go build .
1
2
3
gOOS=linux GOARCH=mipsle go build
env CGO_ENABLED=0 GOOS=linux GOARCH=mips GOMIPS=softfloat go build -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" -o ./release/${name}_mips_sf .

交叉编译

Go是一门编译型语言,所以在不同平台上,需要编译生成不同格式的二进制包。

由于Go 1.5对跨平台编译有了一些改进,包括统一了编译器、链接器等。

编译时候只需要指定两个参数:GOOS和GOARCH即可。

示例:

编译到 linux 64bit

或者可以使用 -o 选项指定生成二进制文件名字

$ GOOS=linux GOARCH=amd64 go build -o app.linux

编译到 linux 32bit

$ GOOS=linux GOARCH=386 go build

编译到 windows 32bit

$ GOOS=windows GOARCH=386 go build

编译到 Mac OS X 64bit

$ GOOS=darwin GOARCH=amd64 go build

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    android     arm
    darwin      386
    darwin      amd64
    darwin      arm
    darwin      arm64
    dragonfly   amd64
    freebsd     386
    freebsd     amd64
    freebsd     arm
    linux       386
    linux       amd64
    linux       arm
    linux       arm64
    linux       ppc64
    linux       ppc64le
    linux       mips
    linux       mipsle
    linux       mips64
    linux       mips64le
    netbsd      386
    netbsd      amd64
    netbsd      arm
    openbsd     386
    openbsd     amd64
    openbsd     arm
    plan9       386
    plan9       amd64
    solaris     amd64
    windows     386
    windows     amd64

http://dmdgeeker.com/goBook/docs/ch01/cross_compile.html