首頁 >後端開發 >Golang >`go build` 和 `go install` 之間有什麼區別,它們在哪裡安裝可執行檔?

`go build` 和 `go install` 之間有什麼區別,它們在哪裡安裝可執行檔?

DDD
DDD原創
2024-12-03 18:41:11317瀏覽

What's the Difference Between `go build` and `go install`, and Where Do They Install Executables?

剖析「go install」:揭秘建置與安裝過程

文件中經常沒有解釋go build 和go 之間的區別可能安裝會讓開發人員感到困惑。雖然大多數人期望 go install 透過將編譯的可執行檔重新定位到指定位置來鏡像 make install 的功能,但他們驚訝地發現結果駐留在 GOROOT/bin 目錄中。本文旨在闡明這兩個命令的目的和行為。

實際發生了什麼事?

go build 是一個簡單的編譯工具。它只是組裝可執行檔並將其儲存在指定的目的地。另一方面,go install 執行稍微複雜的過程:

  • 它編譯可執行文件,就像 go build 一樣。
  • 它將執行檔移至 $GOPATH/bin ,確保可以從命令列存取它。
  • 它將程式匯入的所有非主套件快取在 $GOPATH/pkg 中。如果原始程式碼未更改,則在後續編譯期間會利用此快取。

可視化包樹

為了說明go build 和go install,考慮以下包樹:

.
├── bin
│   └── hello  # by go install
└── src   
    └── hello
        ├── hello  # by go build
        └── hello.go

hinstall,請執行文件由go build 編譯並駐留在src/hello 目錄,而go install則放在 $GOPATH/bin 中,並將依賴快取儲存在 $GOPATH/pkg 中。

安裝位置可以自訂嗎?

與make install不同,go install不提供指定自訂安裝目錄的選項。為了實現這種程度的控制,有必要建立一個定義建置和安裝過程的 Makefile。但是,通常不建議使用這種方法。

其他上下文

更多見解,請參閱有關以下主題的官方文件:

  • [走建置](https://go.dev/ref/cmd/go#hdr-Compile_packages_and_dependency)
  • [去安裝](https://go.dev/ref/cmd/go# hdr-Install_and_build_packages_and_dependency)

以上是`go build` 和 `go install` 之間有什麼區別,它們在哪裡安裝可執行檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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