2 回答

TA貢獻1848條經驗 獲得超10個贊
源代碼
此目錄包含組織為包的源文件。
包
該目錄包含從 src 目錄 Go 源代碼包編譯的 Go 包對象。如果一個包不包含帶有main
包聲明的文件,那么 Go 在目錄中創建一個包存檔 (.a) 文件pkg
。包對象在鏈接時用于在 bin 目錄中創建完整的 Go 可執行二進制文件。
因此,一旦我們編譯了一個包,我們就可以將該對象鏈接到許多可執行文件中。就像, fmt
是編譯好的庫pkg
,所以不需要再次編譯。我們可以鏈接該對象以運行所有 Go 程序。

TA貢獻1796條經驗 獲得超4個贊
Go 安裝pkg
樹包含多個不同的東西:
樹中
pkg/tool
有 Go 編譯器本身和其他相關工具。這些是某些os-arch組合的二進制文件。當然,這對于構建 Go 軟件是完全必要的。還將有一個或多個os-arch樹,其中包含用于 go stdlib 的編譯庫。對于用于交叉編譯的 go 安裝,這將與 in 的 os-arch 組合不同
pkg/tool
。中還有一些 C 頭文件
pkg/include
。
在 Go 安裝src
樹中有多個不同的東西:
在 下
src/cmd
,有 Go 編譯器和工具的源代碼。構建 Go 軟件不需要此源。其他地方
src
是 go stdlib 的源代碼。這也是構建軟件所必需的。
中的庫和可執行文件pkg
是為特定的 os-arch組合構建的,來自src
.
這些庫不需要構建軟件,因為 go 將從源代碼重新構建。可執行文件是必需的,go
構建系統將使用它們。
src
不需要編譯器的源代碼。go stdlib的源代碼是必要的,至少對于所有實際目的。 go build
即使有合適的編譯庫可用,也會堅持尋找源代碼并拒絕構建如果它不存在。
從 go 1.7 到 go 1.12 支持僅二進制包,但它被刪除了。
- 2 回答
- 0 關注
- 157 瀏覽
添加回答
舉報