Golang 交叉編譯

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

[TOC]

說明

本文交叉編譯需要 1.5 以上

Golang Mac 下編譯 windows 64

➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o test_win_x64.exe test.go

Golang Mac 下編譯 Linux 64 支援

➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o test_linux_x64 test.go

預備交叉編譯環境

Mac or Linux 準備

因為go在1.5以後使用了golang 1.4 來編譯自己(自舉),所以需要先下載golang1.4

https://storage.googleapis.com/golang/go1.4.2.darwin-amd64-osx10.8.tar.gz
https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz

設定環境變數 GOROOT_BOOTSTRAP

解壓到

tar zxvf [go1.4.2.darwin-amd64-osx10.8.tar.gz](https://storage.googleapis.com/golang/go1.4.2.darwin-amd64-osx10.8.tar.gz)cp go/ $home/go-bootstrap/
GOROOT_BOOTSTRAP=$home/go-bootstrap/export GOROOT_BOOTSTRAP

Windows 準備

下載
http://tdm-gcc.tdragon.net/download
需要下載 32 和 64 安裝 TDM-GCC 32位 64位 並設定 path

下載
https://storage.googleapis.com/golang/go1.4.2.windows-amd64.zip
解壓後
設定環境變數 GOROOT_BOOTSTRAP 到解壓目錄(禁止任何中文,編碼問題)

進入需要配置交叉編譯的目錄,執行

cd %GOROOT%/srcset CGO_ENABLED=0 | set GOOS=linux | set GOARCH=amd64 | make.bat

Golang跨平台交叉編譯

  • 需要 進入 $GOROOT/go/src 源碼所在目錄執行
  • 需要 golang 1.4.x 的環境
# 如果你想在Windows 32位系統下運行➜  ~cd $GOROOT/src➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash# 如果你想在Windows 64位系統下運行➜  ~cd $GOROOT/src➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.# 如果你想在OS X 32位系統下運行➜  ~cd $GOROOT/src➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=386 ./make.bash# 如果你想在OS X 64位系統下運行➜  ~cd $GOROOT/src➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 ./make.bash# 如果你想在Linux 32位系統下運行➜  ~cd $GOROOT/src➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash# 如果你想在Linux 64位系統下運行➜  ~cd $GOROOT/src➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash

執行結束後,才可以使用交叉編譯

並不是重新編譯Go,因為安裝Go的時候,只是編譯了本地系統需要的東西,而需要跨平台交叉編譯,需要在Go中增加對其他平台的支援,所以會有 ./make.bash 這麼一個過程

Error Set $GOROOT_BOOTSTRAP

##### Building Go bootstrap tool.cmd/distERROR: Cannot find /Users/xxx/go1.4/bin/go.Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

交叉編譯執行

# 如果你想在Windows 32位系統下運行➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=386 go build test.go# 如果你想在Windows 64位系統下運行➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go# 如果你想在OS X 32位系統下運行➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=386 go build test.go# 如果你想在OS X 64位系統下運行➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go# 如果你想在Linux 32位系統下運行➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=386 go build test.go# 如果你想在Linux 64位系統下運行➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
  • CGO_ENABLED = 0 表示設定CGO工具不可用
  • GOOS 程式構建環境的目標作業系統
  • GOARCH 表示程式構建環境的目標計算架構

編譯支援設定

GOOS=windows go build -vGOOS=linux go build -vGOOS=darwin go build -v
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.