Go語言中使用 go build 指令主要用於編譯程式碼。在套件的編譯過程中,若有必要,會同時編譯與之相關聯的套件。
go build 有許多種編譯方法,例如無參數編譯、檔案清單編譯、指定套件編譯等,使用這些方法都可以輸出執行檔。
go build 無參數編譯
程式碼相對於GOPATH 的目錄關係如下:
##.如果原始碼中沒有依賴GOPATH 的套件引用,那麼這些原始碼可以使用無參數go build。格式如下:└── src
└── chapter11
└── gobuild
go 程式碼如下:package main import ( "fmt" ) func main() { // 同包的函数 pkgFunc() fmt.Println("hello world") }
lib.go 程式碼如下:package main import "fmt" func pkgFunc() { fmt.Println("call pkgFunc") }
go build在程式碼所在目錄(./src/chapter11/gobuild)下使用go build 指令,如下所示:
$ cd src/chapter11/gobuild/
$ go build$ ls
gobuild lib.go main.go$ ./gobuild第 2 行,go build 在編譯開始時,會搜尋目前目錄的 go 原始碼。這個範例中,go build 會找到 lib.go 和 main.go 兩個檔案。編譯這兩個檔案後,產生目前目錄名的可執行檔並放置在目前目錄下,這裡的可執行檔是 go build。 第 3 行和第 4 行,列出目前目錄的文件,編譯成功,輸出 go build 執行檔。 第 5 行,執行目前目錄的可執行檔 go build。 第 6 行和第 7 行,執行 go build 後的輸出內容。call pkgFunc
hello world
#指令列指令和輸出說明如下:
第1 行,轉到本例原始碼目錄下。
go build 檔案清單
編譯同目錄的多個原始碼檔案時,可以在go build 的後面提供多個檔案名,go build 會編譯這些原始碼,輸出可執行文件,“go build 文件列表”的格式如下:go build file1.go file2.go……在代碼代碼所在目錄(./src/chapter11/gobuild)中使用go build,在go build 後添加要編譯的原始碼檔名,程式碼如下: $ go build main.go lib.go
$ ls
lib.go main main.go
call pkgFunc第 2 行和第 3 行列出完成編譯後的目前目錄的檔案。這次的可執行檔名變成了 main。 第 4~6 行,執行 main 文件,得到期望輸出。 第 7 行,試著調整檔案清單的順序,將 lib.go 放在清單的首位。 第 8 行和第 9 行,編譯結果中出現了 lib 執行檔。 使用「go build 檔案清單」方式編譯時,可執行檔預設選擇檔案清單中第一個原始碼檔案作為執行檔名輸出。hello world
$ go build lib.go main.go
$ ls
lib lib.go main main.go
#指令列指令和輸出說明如下:
第1 行在go build 後新增檔案列表,選取需要編譯的Go 原始碼。
go build 套件
「go build 套件」在設定GOPATH 後,可以直接根據套件名稱進行編譯,即使封包內檔案被增加(加)刪(除)也不影響編譯指令。1) 程式碼位置及原始碼
相對於GOPATH的目錄關係如下:.
└── src└── chapter11
└──goinstall├- main.go└── mypkg.go
main.go程式碼如下:
package main import ( "chapter11/goinstall/mypkg" "fmt" ) func main() { mypkg.CustomPkgFunc() fmt.Println("hello world") }
mypkg.go程式碼如下:package mypkg import "fmt" func CustomPkgFunc() { fmt.Println("call CustomPkgFunc") }2) 按套件編譯指令
執行下列指令將以套件方式編譯goinstall 程式碼:
#$ export GOPATH=/home/davy/golangbook/code$ go build -o main chapter11/goinstall
$ ./goinstallcall CustomPkgFunc
hello world###############################################################################################################################'板足夠代碼說明如下:######第1 行,設定環境變數GOPATH,這裡的路徑是筆者的目錄,可以依照實際目錄來設定GOPATH。 ######第 2 行,-o執行指定輸出檔為 main,後面接著要編譯的套件名稱。套件名稱是相對於 GOPATH 下的 src 目錄開始的。 ######第 3~5 行,編譯成功,執行 main 後獲得期望的輸出。 ###
更多golang知識請關注golang教程欄位。
以上是golang如何編譯的詳細內容。更多資訊請關注PHP中文網其他相關文章!