Golang 的跨平台交叉編譯淺析

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

什麼是跨平台交叉編譯

交叉編譯

通俗地講就是在一種平台上編譯出其他幾個平台能夠啟動並執行程式(通常指系統和CPU架構的不同)

交叉編譯通常使用在分發時,編譯出多個平台可用的二進位程式,比如在Linux下編譯出可以在Win下可以使用的EXE程式。

本地編譯

本地編譯是指當前系統所配置編譯器根據當前系統配置編譯出在當前系統所適用的執行程式(部分其他語言本地編譯時間可能會由於擴充包含的問題,無法在同平台其他機器運行)。

所以如果要產生在非原生其他平台和系統的程式,就需要用到交叉編譯(交叉編譯工具鏈)。

交叉編譯工具鏈

> 交叉編譯工具鏈是一個由編譯器、連接器和解譯器組成的綜合開發環境,交叉編譯工具鏈主要由binutils、gcc和glibc 3個部分組成。

> 有時出於減小 libc 庫大小的考慮,也可以用別的 c 庫來代替 glibc,例如 uClibc、dietlibc 和 newlib。

Golang 的跨平台交叉編譯

Go語言是編譯型語言,可以將程式編譯後在將其拿到其它作業系統中運行,此過程只需要在編譯時間增加對其它系統的支援。

交叉編譯依賴下面幾個環境變數

  • GOARCH 目標平台(編譯後的目標平台)的處理器架構(386、amd64、arm)
  • GOOS 目標平台(編譯後的目標平台)的作業系統(darwin、freebsd、linux、windows)

各平台的GOOS和GOARCH支援情況

GOOS GOARCH 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

Golang交叉編譯步驟(可跳過)

> 首先進入$GOROOT/go/src 源碼所在目錄,執行如下命令建立目標平台所需的包和工具檔案

# 如果你想在Windows 32位系統下運行cd $GOROOT/srcCGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash# 如果你想在Windows 64位系統下運行cd $GOROOT/srcCGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash# 如果你想在Linux 32位系統下運行cd $GOROOT/srcCGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash# 如果你想在Linux 64位系統下運行cd $GOROOT/srcCGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash

交叉編譯當前項目

# 如果你想在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# 如果你想在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 表示程式構建環境的目標作業系統(Linux、Windows);GOARCH 表示程式構建環境的目標計算架構(32位、64位);

現在你可以在相關目標作業系統上運行編譯後的程式了。

連結

關于于 Go 的跨平台交叉編譯淺析交叉編譯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.