各平台的GOOS和GOARCH参考

交叉编译依赖下面几个环境变量:

  • $GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm)
  • $GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)
1
2
3
4
5
OS ARCH OS version
linux 386 / amd64 / arm >= Linux 2.6
darwin 386 / amd64 OS X (Snow Leopard + Lion)
freebsd 386 / amd64 >= FreeBSD 7
windows 386 / amd64 >= Windows 2000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
# Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
# Windows 下编译 Mac 64位 可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
# Windows 下编译 Linux 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
# 不带前面参数的 go build 只是编译出开发环境适用的执行文件
go build main.go
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
package main
import (
"log"
"fmt"
"time"
"github.com/cactus/go-statsd-client/statsd"
)
func main() {
//时间转化为string,layout必须为 "2006-01-02 15:04:05"
timeNow := time.Now().Format("2006-01-02 15:04:05")
fmt.Println("health check at ", timeNow , "\n")
// first create a client
client, err := statsd.NewClient("ip:8125", "modem")
// handle any errors
if err != nil {
log.Fatal(err)
}
// make sure to clean up
defer client.Close()
// Send a stat
client.Inc("health.offline", 1, 1.0)
}