從原始碼安裝 Go

這一主題描述如何從原始碼建置並執行 Go。若要使用安裝程式安裝,請參閱 下載並安裝

簡介

Go 是開源專案,以 BSD-style 授權 進行發行。本文件說明你如何檢出原始碼、自行建置在你的電腦上並執行它們。

大部份的使用者不需要執行這項操作,而是會按照 下載並安裝 中所述,從預編譯的二進位套件安裝,這是一個更為簡單的程序。但如果你想協助開發預編譯套件中的內容,請繼續閱讀。

有兩個官方的 Go 編譯器工具鏈。本文件著重在 gc Go 編譯器和工具。有關如何使用 gccgo(一個使用 GCC後端的傳統編譯器)的資訊,請參閱設定並使用 gccgo

Go 編譯器支援下列指令集

amd64, 386
x86 指令集,64 和 32 位元。
arm64, arm
ARM 指令集,64 位元 (AArch64) 和 32 位元。
loong64
64 位元 LoongArch 指令集。
mips64, mips64le, mips, mipsle
大端、小端 64 位和 32 位的 MIPS 指令集。
ppc64, ppc64le
大端、小端 64 位的 PowerPC 指令集。
riscv64
64 位 RISC-V 指令集。
s390x
IBM z/Architecture。
wasm
WebAssembly.

編譯器可針對 AIX、Android、DragonFly BSD、FreeBSD、Illumos、Linux、macOS/iOS (Darwin)、NetBSD、OpenBSD、Plan 9、Solaris 和 Windows 作業系統(儘管並非所有作業系統都支援所有架構)。

「首要」資格港口的清單可在 首要資格港口 wiki 頁面取得。

支援的多個組合的完整清單如下列 環境變數 的討論中。

請參閱 Go Wiki 的 MinimumRequirements 頁面,以取得 整體系統需求

安裝 Go 編譯二進位檔以進行引導

Go 工具鏈是用 Go 編寫的。若要建置它,您需要已安裝一個 Go 編譯器。執行工具的初始建置的指令碼會在 $PATH 中尋找「go」指令,因此只要您已在您的系統中安裝 Go 並在您的 $PATH 中加以設定,您就可以從原始程式碼建置 Go。或者,如果您喜歡,您可以將 $GOROOT_BOOTSTRAP 設定到 Go 安裝的根目錄,以用於建置新的 Go 工具鏈;$GOROOT_BOOTSTRAP/bin/go 應該是可以用來當作 go 指令的。

所需的 Go 最低版本會依賴於目標版本的 Go

有四種可取得引導工具鏈的方式

下列會詳細說明這些方法。

從二進位發行版引導工具鏈

若要使用一個二進位發行版當作引導工具鏈,請參閱 下載頁面,或使用任何其他符合最低版本需求的包裝好的 Go 發行版。

從交叉編譯原始程式碼引導工具鏈

若要從原始程式碼交叉編譯一個引導工具鏈,這在 Go 1.4 未涵蓋的系統上是必須的(例如,linux/ppc64le),請在不同的系統上安裝 Go,然後執行 bootstrap.bash

當以(例如)執行時

$ GOOS=linux GOARCH=ppc64 ./bootstrap.bash

bootstrap.bash 會為 GOOS/GOARCH 組合交叉編譯一個工具鏈,並將產生的樹狀結構留在 ../../go-${GOOS}-${GOARCH}-bootstrap 中。這個樹狀結構可以複製到指定目標類型中,並做為 GOROOT_BOOTSTRAP 以啟動本地組建。

使用 gccgo 啟動工具鏈

若要使用 gccgo 做為啟動工具鏈,你需要先將 $GOROOT_BOOTSTRAP/bin/go 安排成與 gccgo 5 一同提供的 go 工具。例如,在 Ubuntu Vivid 中

$ sudo apt-get install gccgo-5
$ sudo update-alternatives --set go /usr/bin/go-5
$ GOROOT_BOOTSTRAP=/usr ./make.bash

使用 C 原始碼啟動工具鏈

若要使用 C 原始碼建立啟動工具鏈,請使用 git 分支 release-branch.go1.4go1.4-bootstrap-20171003.tar.gz,其中包含 Go 1.4 原始碼以及累積修復程式,可讓工具在較新的作業系統上執行。(Go 1.4 是最後一個工具鏈以 C 編寫的發行版。)在將 Go 1.4 原始碼解壓縮後,cdsrc 子目錄,在環境中設定 CGO_ENABLED=0,並執行 make.bash (或在 Windows 中執行 make.bat)。

在將 Go 1.4 原始碼解壓縮到你的 GOROOT_BOOTSTRAP 目錄中後,你必須讓這個 git 克隆實體檢查出到分支 release-branch.go1.4。特別是,請勿嘗試在名為「擷取儲存庫」的後續步驟中重複使用此 git 克隆。go1.4 啟動工具鏈一定能夠正確瀏覽假定在此儲存庫根目錄下找到的 go1.4 原始碼。

請注意,Go 1.4 無法在所有後續版本 Go 所支援的系統上執行。特別是,Go 1.4 不支援 macOS 的目前版本。在這些系統上,必須使用其他方法取得啟動工具鏈。

如有需要,安裝 Git

若要執行下一步,你必須安裝 Git。(在繼續之前,檢查你是否擁有 git 指令。)p>

如果你沒有執行的 Git 安裝,請遵循 Git 下載 頁面中的指示。

(選用) 安裝 C 編譯器

若要以 cgo 支援來建置 Go 安裝,讓 Go 程式匯入 C 資料庫,必須先安裝 C 編譯器,例如 gccclang。請使用系統上的標準安裝方法執行此操作。

若要沒有 cgo 建置,請在執行 all.bashmake.bash 之前,設定環境變數 CGO_ENABLED=0

擷取儲存庫

變更至您打算安裝 Go 的目錄,並確定 goroot 目錄不存在。接著 кло拷貝儲存庫並結帳最新的版本標籤或版本分支(例如 go1.22.0release-branch.go1.22

$ git clone https://go.googlesource.com/go goroot
$ cd goroot
$ git checkout <tag>

其中 <標籤> 是版本的發行字串。

Go 會安裝在結帳的目錄中。例如,如果 Go 是在 $HOME/goroot 中結帳,可執行檔案就會安裝在 $HOME/goroot/bin 中。這個目錄可以有任意的名稱,但請注意,如果 Go 是在 $HOME/go 中結帳,它會與 $GOPATH 的預設位置產生衝突. 請參閱以下的 GOPATH

提醒:如果您選擇也要編譯來自來源的開機二進位檔(在較早的區段中),您仍然需要在這個時間點再次 git clone(以結帳最新的 <標籤>),因為您必須保持 go1.4 儲存庫分明。

如果您打算修改 go 原始碼,並將變更貢獻給計畫,那就將您的儲存庫從版本標籤移至 master(開發)分支。否則,請略過這個步驟。

$ git checkout master

安裝 Go

若要建立 Go 分配,請執行

$ cd src
$ ./all.bash

(要在 Windows 下建立請使用 all.bat。)

如果一切順利,它會列印最後幾行程式碼輸出,如下所示

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/you/go.
Installed commands in /home/you/go/bin.
*** You need to add /home/you/go/bin to your $PATH. ***

其中最後幾行程式碼輸出的詳細資料反映安裝期間使用的作業系統、架構及根目錄。

如需有關控制建置方式的更多資訊,請參閱以下 環境變數 討論。all.bash(或 all.bat)會為 Go 執行重要測試,這可能比單純建置 Go 花費更多時間。如果您不想要執行測試套件,請使用 make.bash(或 make.bat)替代。

測試您的安裝

透過建立一個簡單程式,檢查 Go 是否正確安裝。

建立一個名為 hello.go 的檔案,並將以下程式碼放在其中

package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

然後使用 go 工具執行它

$ go run hello.go
hello, world

如果您看到「hello, world」的訊息,那就表示 Go 已正確安裝。

設定您的工作環境

您快完成了。您只需再做一些設定。

如何撰寫 Go 程式碼 了解如何設定和使用 Go 工具

如何撰寫 Go 程式碼 文件提供有關使用 Go 工具的必要設定說明

安裝其他工具

多項 Go 工具的原始碼(包括 gopls)皆保存在 golang.org/x/tools 儲存庫 中。若要安裝其中一個工具(本例為 gopls

$ go install golang.org/x/tools/gopls@latest

社群資源

說明頁面 上列出的常見社群資源,都有積極參與的開發人員,他們能協助解決您在安裝或開發工作中所遇到的問題。若您想持續掌握最新資訊,還有一個郵寄清單 golang-checkins,會收到 Go 儲存庫每次簽入的摘要訊息。

可以透過 Go 問題追蹤器 回報錯誤。

與最新版本齊頭並進

新版本會透過 golang-announce 郵寄清單宣布。每項宣布都會提及最新版本標籤,例如 go1.9

若要將現有的樹狀結構更新到最新版本,可以執行下述指令

$ cd go/src
$ git fetch
$ git checkout <tag>
$ ./all.bash

其中 <標籤> 是版本的發行字串。

選擇性環境變數

可以透過環境變數自訂 Go 編譯環境。編譯時並不需要這些變數,但您可能想設定一些變數以覆寫預設值。

請注意 $GOARCH$GOOS 識別的目標環境,而不是您執行的環境。實際上,您總是進行交叉編譯。關於架構,我們指的是目標環境可以執行的二進位檔類型:執行 32 位元專用作業系統的 x86-64 系統必須將 GOARCH 設定為 386,而不是 amd64

如果你想要覆寫預設值,請在你的 shell 設定檔 ($HOME/.bashrc$HOME/.profile,或等效設定檔) 中設定這些變數。設定檔可能看起來像這樣

export GOARCH=amd64
export GOOS=linux

不過,再重申一次,這些變數都不用設定就能建置、安裝,並開發 Go 樹狀結構。