我正在Go編寫一個庫。我打算分發它,並且主要需求爲',沒有源代碼'。直接使用二進制包
爲了測試,我已經創建了兩個工作空間一樣之後,
WS1
- 斌/
- PKG/linux_amd64/lib.a
- 的src/lib中/ src.go
WS2
- 倉/
- PKG/
- 的src /主/ main.go
我的第一工作區(WS1)是實際虛設庫,它具有一定的實用功能。第二個工作區(WS2)具有使用WS1中的程序包(lib.a)的主要功能。
一切都很好,直到我從WS1中移除源代碼。如果我刪除WS1目錄/lib/src.go,我去構建過程中收到以下錯誤,
main.go:5:2:在任何的找不到包「LIB」: 在/ usr /本地/ GO/src目錄/包裝/ lib目錄(由$ GOROOT)../Testing/ws1/src/lib (從$ GOPATH)
上述消息表示我們,我們應該保持源文件也是如此。 單獨預編譯的二進制包不能直接使用。
根據在線提出的一些建議,我們可能會保留一些虛擬源,其時間戳值小於二進制包的時間戳。但是,這似乎並不是我們可行的解決方案。不幸的是,如果虛擬源的時間戳得到更新會發生什麼?
我看到這裏討論類似的問題, https://github.com/golang/go/issues/2775
我的問題:
分發源是Golang唯一的可能性?
爲什麼Go沒有提供直接使用'.a'文件的規定?
如果要保持Go的源代碼是強制性的,爲什麼這個小東西是 在Go的任何地方都沒有提到? (或)我在這裏錯過了什麼?
在此先感謝您的幫助!
謝謝Volker!現在在這裏瞭解問題。原因是我在'去建立'是大多數開發人員將反正使用這個工具爲他們的項目。 – 2015-02-11 09:04:31
單挑:從Go 1.5開始,這個技巧不再適用,請參閱[此GitHub問題](https://github.com/golang/go/issues/12186)。 – tsuna 2015-08-19 04:41:34