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

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

直接使用二進制包

直接使用二進制包

Go
狐的傳說 2021-09-13 16:06:17
我正在用 Go 編寫一個庫。我計劃分發它,主要要求是“無源代碼”。為了測試,我創建了兩個工作區,如下所示,WS1倉/pkg/linux_amd64/lib.asrc/lib/src.goWS2倉/包/src/main/main.go我的第一個工作區 (WS1) 是實際的虛擬庫,它具有一些實用功能。第二個工作區 (WS2) 具有使用來自 WS1 的包 (lib.a) 的主要功能。在我從 WS1 中刪除源之前,一切都運行良好。如果我刪除 WS1 中的目錄 /lib/src.go,在 go build 期間我會收到以下錯誤,main.go:5:2:在以下任何一個中找不到包“lib”:/usr/local/go/src/pkg/lib(來自 $GOROOT)../Testing/ws1/src/lib(來自 $GOPATH)上面的消息表明我們也應該保留源文件。單獨的預編譯二進制包不能直接使用。根據網上的一些建議,我們可能會保留一些時間戳值小于二進制包時間戳的虛擬源。但是,這對我們來說似乎不是一個可行的解決方案。如果虛擬源的時間戳不幸更新了會發生什么?我在這里看到過類似的問題, https://github.com/golang/go/issues/2775我的問題:分發源碼是 Golang 唯一的可能嗎?為什么 Go 沒有提供直接使用“.a”文件的規定?如果 Go 必須保留源代碼,為什么 Go 中沒有提到這個小東西?(或)我在這里遺漏了什么嗎?在此先感謝您的幫助!
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

Go 編譯器只需要這些.a文件。如果您運送它們,任何人都可以在沒有源代碼的情況下使用您的軟件包。

但是您的用戶將不得不手動調用編譯器(例如6g,不是go工具)。如果您發送一個myfoo.a文件一個myfoo.go僅包含的虛擬源,package myfoo并且 的時間戳myfoo.a比 的新myfoo.go(并且您將所有內容都放在適當的位置),您可以使用該go工具。

更新:go 工具的較新版本檢測已刪除的文件,并要求所有文件(可能為空)在 src 文件夾中具有正確的文件名和較舊的時間戳。管理時間戳不應該成為破壞者。

不要誤以為該go工具Go:它是構建、測試、獲取任何 Go 代碼的非常方便的工具,但它既不是語言,也不是編譯器,也不是鏈接器。

順便說一句:不分發源確實沒有意義。


查看完整回答
反對 回復 2021-09-13
  • 3 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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