2013-03-26 40 views
6

我注意到當使用go build時,二進制結果可能超過2MB;但使用gccgo二進制小於35k。如何使用gccgo構建完整的go程序二進制文件?

,我使用gccgo時注意到的另一個問題是,所產生的二進制文件沒有其他的Linux中運行的(缺少libgo.so我相信),但go build二進制運行就好了(所以我想象它因爲二進制包括所有是否需要運行?);有沒有辦法與gccgo做到這一點?

+3

鏈接與靜態 – fuz 2013-03-26 16:02:06

+0

糟糕,只是注意到它已在此評論中回答... – mna 2013-03-26 17:35:15

回答

4

您可以鏈接libgo靜態,同時還連接系統庫動態,通過使用-static-libgo選項。 (這僅適用於gccgo)。

0

如果使用go 1.8或更高版本,如果使用CGO_ENABLED=1(默認爲1)構建,則本地編譯會動態鏈接。通過運行go env CGO_ENABLED來檢查此變量。 運行go build時,可以通過將環境變量CGO_ENABLED設置爲0來切換到靜態鏈接。

CGO_ENABLED=0 go build 

順便說一句,交叉編譯自動使用靜態鏈接。

相關問題