交叉編譯 Go 程序
目錄:
前言
Go 是支持交叉編譯的.即在 Ubuntu 下開發,再編譯成 Windows 下可以運行的程序,而且還可在 32 位或 64 位之間轉換.
生成目標平臺的包和工具
Go 提供了不同平臺和架構需要用到的包和工具, 但是安裝 Go 時默認只編譯了當前平臺所需要的包和工具.所以需要編譯目標平臺的包和工具.
#切換至 GOROOT 下的 src 目錄
cd GOROOT/src
#編譯生成 Windows 64 位 平臺的包和工具
CGO_ENABLED=0 GOOS= windows GOARCH= amd64 ./make.bash
#等待編譯結束,
#在 GOROOT/bin 目錄下會生成 windows_amd64 目錄,該目錄內含該平臺相應的工具
cd GOROOT/bin/windows_amd64/ && ls
#在 GOROOT/pkg 目錄下會生成 windows_amd64 目錄,該目錄內含該平臺相應的包
#目錄命名規則: 平臺 + "_" + 架構
cd GOROOT/pkg/windows_amd64 && ls
批量生成所有平臺的包和工具
若想生成所有支持平臺的包和工具,一種方法是參照上一節介紹的方法分別替換GOOS
和 GOARCH
的值依次生成.或使用 Github 上的 golang-crosscompile 工具:
#下載
git clone git://github.com/davecheney/golang-crosscompile.git
#啓用
source golang-crosscompile/crosscompile.bash
#編譯生成所有平臺的包和工具
go-crosscompile-build-all
該工具我沒有試過進供參考. 詳細說明請訪問作者博客.
驗證
# 編譯生成目標平臺程序,以下代碼將生成 hello.exe
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build hello.go
# 生成成功後將 `hello.exe ` 複製至目標平臺下即可運行.
附: 各平臺的 GOOS
和 GOARCH
的可選值
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
參考文檔
blog comments powered by Disqus