十年網(wǎng)站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Go語言中使用 go build 命令主要用于編譯代碼。在包的編譯過程中,若有必要,會同時編譯與之相關聯(lián)的包。
go build 有很多種編譯方法,如無參數(shù)編譯、文件列表編譯、指定包編譯等,使用這些方法都可以輸出可執(zhí)行文件。
go build 無參數(shù)編譯
代碼相對于 GOPATH 的目錄關系如下:
.
└── src
└── chapter11
└── gobuild
├── lib.go
└── main.go
main.go 代碼如下:
package main import ( "fmt" ) func main() { // 同包的函數(shù) pkgFunc() fmt.Println("hello world") }
lib.go 代碼如下:
package main import "fmt" func pkgFunc() { fmt.Println("call pkgFunc") }
如果源碼中沒有依賴 GOPATH 的包引用,那么這些源碼可以使用無參數(shù) go build。格式如下:
go build
在代碼所在目錄(./src/chapter11/gobuild)下使用 go build 命令,如下所示:
$ cd src/chapter11/gobuild/
$ go build
$ ls
gobuild lib.go main.go
$ ./gobuild
call pkgFunc
hello world
命令行指令和輸出說明如下:
第 1 行,轉到本例源碼目錄下。
第 2 行,go build 在編譯開始時,會搜索當前目錄的 go 源碼。這個例子中,go build 會找到 lib.go 和 main.go 兩個文件。編譯這兩個文件后,生成當前目錄名的可執(zhí)行文件并放置于當前目錄下,這里的可執(zhí)行文件是 go build。
第 3 行和第 4 行,列出當前目錄的文件,編譯成功,輸出 go build 可執(zhí)行文件。
第 5 行,運行當前目錄的可執(zhí)行文件 go build。
第 6 行和第 7 行,執(zhí)行 go build 后的輸出內容。
go build+文件列表
編譯同目錄的多個源碼文件時,可以在 go build 的后面提供多個文件名,go build 會編譯這些源碼,輸出可執(zhí)行文件,“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
$ ./main
call pkgFunc
hello world
$ go build lib.go main.go
$ ls
lib lib.go main main.go
命令行指令和輸出說明如下:
第 1 行在 go build 后添加文件列表,選中需要編譯的 Go 源碼。
第 2 行和第 3 行列出完成編譯后的當前目錄的文件。這次的可執(zhí)行文件名變成了 main。
第 4~6 行,執(zhí)行 main 文件,得到期望輸出。
第 7 行,嘗試調整文件列表的順序,將 lib.go 放在列表的首位。
第 8 行和第 9 行,編譯結果中出現(xiàn)了 lib 可執(zhí)行文件。
使用“go build+文件列表”方式編譯時,可執(zhí)行文件默認選擇文件列表中第一個源碼文件作為可執(zhí)行文件名輸出。
go build+包
“go build+包”在設置 GOPATH 后,可以直接根據(jù)包名進行編譯,即便包內文件被增(加)刪(除)也不影響編譯指令。
1) 代碼位置及源碼
相對于GOPATH的目錄關系如下:
.
└── src
└── chapter11
└──goinstall
├── main.go
└── mypkg
└── 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) 按包編譯命令
執(zhí)行以下命令將按包方式編譯 goinstall 代碼:
$ export GOPATH=/home/davy/golangbook/code
$ go build -o main chapter11/goinstall
$ ./goinstall
call CustomPkgFunc
hello world
代碼說明如下:
第 1 行,設置環(huán)境變量 GOPATH,這里的路徑是筆者的目錄,可以根據(jù)實際目錄來設置 GOPATH。
第 2 行,-o執(zhí)行指定輸出文件為 main,后面接要編譯的包名。包名是相對于 GOPATH 下的 src 目錄開始的。
第 3~5 行,編譯成功,執(zhí)行 main 后獲得期望的輸出。
以上就是golang如何編譯的詳細內容,更多請關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司其它相關文章!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。