首頁  >  文章  >  後端開發  >  golang如何編譯

golang如何編譯

尚
原創
2019-12-26 09:43:504942瀏覽

golang如何編譯

Go語言中使用 go build 指令主要用於編譯程式碼。在套件的編譯過程中,若有必要,會同時編譯與之相關聯的套件。

go build 有許多種編譯方法,例如無參數編譯、檔案清單編譯、指定套件編譯等,使用這些方法都可以輸出執行檔。

go build 無參數編譯

程式碼相對於GOPATH 的目錄關係如下:

##.

└── 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")
}
如果原始碼中沒有依賴GOPATH 的套件引用,那麼這些原始碼可以使用無參數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 兩個檔案。編譯這兩個檔案後,產生目前目錄名的可執行檔並放置在目前目錄下,這裡的可執行檔是 go build。

第 3 行和第 4 行,列出目前目錄的文件,編譯成功,輸出 go build 執行檔。

第 5 行,執行目前目錄的可執行檔 go build。

第 6 行和第 7 行,執行 go build 後的輸出內容。

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

$ ./main
call pkgFunc

hello world
$ go build lib.go main.go
$ ls
lib  lib.go  main  main.go


#指令列指令和輸出說明如下:

第1 行在go build 後新增檔案列表,選取需要編譯的Go 原始碼。

第 2  行和第 3 行列出完成編譯後的目前目錄的檔案。這次的可執行檔名變成了 main。

第 4~6 行,執行 main 文件,得到期望輸出。

第 7 行,試著調整檔案清單的順序,將 lib.go 放在清單的首位。

第 8 行和第 9 行,編譯結果中出現了 lib 執行檔。

使用「go build 檔案清單」方式編譯時,可執行檔預設選擇檔案清單中第一個原始碼檔案作為執行檔名輸出。

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

$ ./goinstall

call CustomPkgFunc

hello world





###############################################################################################################################'板足夠代碼說明如下:######第1 行,設定環境變數GOPATH,這裡的路徑是筆者的目錄,可以依照實際目錄來設定GOPATH。 ######第 2 行,-o執行指定輸出檔為 main,後面接著要編譯的套件名稱。套件名稱是相對於 GOPATH 下的 src 目錄開始的。 ######第 3~5 行,編譯成功,執行 main 後獲得期望的輸出。 ###

更多golang知識請關注golang教程欄位。

以上是golang如何編譯的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn