2 回答

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

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