先說下交叉編譯是什麼? 交叉編譯也就是你能夠在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提供了更爲強大的功能。