亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

/usr/lib/golang/src 和 /usr/lib/golang/pkg 是什么關系

/usr/lib/golang/src 和 /usr/lib/golang/pkg 是什么關系

Go
慕工程0101907 2022-05-23 17:48:35
如果我為 Go 安裝發行版包,我/usr/lib/golang/pkg會在/usr/lib/golang/src. 這兩組有什么關系?是pkg從源代碼生成的編譯庫src嗎?假設一個使用標準包的 Go 程序,運行 Go 程序是否需要fmt編譯的庫?pkg是否需要編譯 Go 程序?src編譯 Go 程序需要源代碼嗎?
查看完整描述

2 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

源代碼

此目錄包含組織為包的源文件。

該目錄包含從 src 目錄 Go 源代碼包編譯的 Go 包對象。如果一個包不包含帶有main包聲明的文件,那么 Go 在目錄中創建一個包存檔 (.a) 文件pkg。包對象在鏈接時用于在 bin 目錄中創建完整的 Go 可執行二進制文件。

因此,一旦我們編譯了一個包,我們就可以將該對象鏈接到許多可執行文件中。就像, fmt是編譯好的庫pkg,所以不需要再次編譯。我們可以鏈接該對象以運行所有 Go 程序。


查看完整回答
反對 回復 2022-05-23
?
慕的地8271018

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 支持僅二進制包,但它被刪除了。


查看完整回答
反對 回復 2022-05-23
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號