先说下交叉编译是什么? 交叉编译也就是你能够在linux上编译出能够在windows上运行的程序,在32位系统编译出64位系统运行的程序。html
gox就是方便你使用golang的交叉编译的工具。linux
首先你的机器上须要装有golang。配置好了GOROOT,GOPATH这两个环境变量。 我机器上的配置是这个样子(仅供参考)git
export GOROOT=$HOME/go export GOPATH=$HOME/goproj export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN
安装gox其实很简单(只须要2步)。github
go get github.com/mitchellh/gox
以后命令行输入gox -h
,应该会用输出的,否则你要检查下PATH变量设置的是否正确。golang
下一步须要编译出其余平台须要的库。这步有一点慢,要有点耐心。windows
gox -build-toolchain
输出大概是这个样子工具
The toolchain build can't be parallelized because compiling a single Go source directory can only be done for one platform at a time. Therefore, the toolchain for each platform will be built one at a time. --> Toolchain: darwin/386 --> Toolchain: darwin/amd64 ...
当这一步完成时,gox已经能够开始能用了。学习
下面咱们来体验一下gox的强大。 须要注意的是gox无法指定一个文件进行编译的。ui
为方便起见,咱们先到到$GOPATH/src
下,创建一个hello文件夹。随便写个hello.go程序。好比操作系统
package main func main() { println("hello world") }
进入到程序目录中,直接运行gox。程序会一口气生成17个文件。横跨windows,linux,mac,freebsd,netbsd五大操做系统。以及3种了下的处理器(38六、amd6四、arm) 关于处理器的介绍能够看看这个http://www.361way.com/cpuinfo/1510.html arm类型的处理器,在手机上用的比较多。
不少的选项其实gox -h
的帮助均可以查的很清楚。
若是咱们想生成linux和windows上的程序,只要经过一下命令:
gox -os "windows linux" -arch amd64
目录下你就能看到生成出来的两个程序
hello_linux_amd64 hello_windows_amd64.exe
也能够这样用,效果与刚才的命令等价
gox -osarch "windows/amd64 linux/amd64"
还能够继续学习的东西goxc, 该工具封装了gox提供了更为强大的功能。