前言Go 是支持交叉編譯的.即在 Ubuntu 下開發,再編譯成 Windows 下可以運行的程序,而且還可在 32 位或 64 位之間轉換.生成目標平臺的包和工具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.exeCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build hello.go # 生成成功後將 `hello.exe ` 複製至目標平臺下即可運行.
附: 各平臺的 GOOS
和 GOARCH
的可選值
OS ARCH OS versionlinux 386/amd64/arm >= Linux 2.6darwin 386/amd64 OS X (Snow Leopard + Lion)freebsd 386/amd64 >= FreeBSD 7windows 386/amd64 >= Windows 2000
參考文檔
- An introduction to cross compilation with Go
- 如何在32位linux下进行交叉编译?
- 跨平台编译Go程序(交叉编译)