Von*_*onC 11

更新Go 1.5:请参阅"Go 1.5中的交叉编译变得更好 "

要成功进行交叉编译,您需要

  • 目标平台的编译器,如果它们与您的主机平台不同,即您使用darwin/amd64(6g)并且您想要编译linux/arm(5g).
  • 目标平台的标准库,其中包含在构建Go分发时生成的一些文件.

随着计划将Go编译器转换为Go在1.5版本中取得成果,第一个问题现在已经解决.

package main

import "fmt"
import "runtime"

func main() {
        fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}

为达尔文建造/ 386

% env GOOS=darwin GOARCH=386 go build hello.go
# scp to darwin host
$ ./hello
Hello darwin/386

或者为linux/arm构建

% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go
# scp to linux host
$ ./hello
Hello linux/arm

原始答案(Go 1.4及之前)

gox

Gox是一个简单,简洁的Go交叉编译工具,其行为与标准的go build非常相似.
Gox将为多个平台并行构建.
Gox还将为您构建交叉编译工具链.

在使用Gox之前,必须构建交叉编译工具链.Gox可以为您做到这一点.这只需要完成一次(或者每次更新Go时):

$ gox -build-toolchain

您还可以在" 使用Go开发多个平台 "中找到许多跨平台开发技巧.

热情的开发者指出下面来发出19,由左OP Nakka钱德拉,即使第10期报道使GOX成功运行在Windows上.