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上.