Go的共享庫?
回答
這是可能的,現在使用-linkshared標誌
你需要做的就是先運行此命令:(!上面的代碼,使所有通用的軟件包共享)
go install -buildmode=shared -linkshared std
然後
go install -buildmode=shared -linkshared userownpackage
最後在編譯你的代碼時你需要運行:
go build -linkshared yourprogram
上面這些現在是什麼,而不是靜態鏈接所有東西只動態鏈接它們,你會最終得到更小的編譯文件。只是給你一個想法,我的靜態鏈接「hello.go」文件是2.3MB,而使用動態鏈接的相同代碼只有12KB!
顯然,它現在是可能的,但只有在非常精確的情況下。更確切地說,如果您正在爲Android平臺編寫代碼。
GitHub上的「goandroid」項目提供了一組補丁程序,允許Go爲Android NDK特定使用構建一個共享庫。見https://github.com/eliasnaur/goandroid
截至現在(2013年7月),它是Go Tools的擴展,並未嵌入到Google發佈的Go Tools中。 – Nate 2013-07-13 04:02:35
@Nate你能鏈接到擴展名嗎? (獨立的)擴展只能在android上使用,還是可以在桌面上使用? – 2015-07-08 19:57:16
@mihaistancu我想它不會太難交叉編譯去Android,看看[這裏](https://jasonplayne.com/programming-2/how-to-cross-compile-golang-for-android )。考慮到golang 1.5支持iOS,可以很快獲得官方支持。 – Nate 2015-07-09 21:37:30
Go Execution Modes介紹大廈轉到包作爲共享庫:
「在這種模式下圍棋包,或一組包,也可以作爲共享庫導入一個或Go程序。更多的Go包可能會與這個共享庫鏈接,共享庫可能會在Go程序鏈接到運行時間之間更改;程序啓動時可用的共享庫將是使用...
在Go 1.5發行版中,這僅針對linux-amd64目標實現。使用gccgo它可以針對任何支持的目標實現。「
我回到這個問題來寫更新了。 +1 – 2015-08-27 10:19:56
現在可能!我使用Go構建了一個.so文件,然後很容易地導入python!以下是我喜歡的文章:http://www.darkcoding.net/software/building-shared-libraries-in-go-part-1/
- 1. 共享庫中的Block Go例程
- 2. 將共享庫鏈接到共享庫
- 3. 在Go主機之間共享變量
- 4. 共享庫App.Config
- 5. 共享庫websphere
- 6. 共享庫
- 7. TFS共享庫
- 8. Linux共享庫
- 9. cmake共享庫
- 10. 不與共享庫共享所有類
- 11. 共享公共彈簧庫
- 12. 鏈接一個共享庫靜態到我的共享庫
- 13. 使用共享庫的Linux共享庫未定義符號
- 14. 加載共享庫
- 15. 共享庫內部
- 16. Jni和共享庫
- 17. 使用共享庫
- 18. Linux共享庫C++
- 19. 屏幕共享庫
- 20. Maven和共享庫
- 21. Ansible共享庫存
- 22. 保護共享庫
- 23. 鏈接共享庫
- 24. 共享庫,makefile。庫路徑
- 25. FFmpeg的不共享庫
- 26. DLL /共享庫的異常
- 27. C中的共享庫
- 28. Cygwin的將共享庫
- 29. 在ubuntu下的共享庫
- 30. 共享庫中的符號
正確的答案。 – 0x90 2016-02-20 05:32:11
這就是我一直在尋找的東西。但是在我的mac上給出了'-buildmode = shared不支持darwin/amd64'。 – lvle 2017-05-06 16:40:36