2 回答

TA貢獻1831條經驗 獲得超4個贊
這實際上是一個編譯器(實際上它嵌入了2個編譯器),并且使完全可執行的可執行文件成為可能。您不需要任何補充庫或任何類型的運行時即可在服務器上執行它。您只需要針對目標計算機體系結構對其進行編譯。
從文檔中:
有兩個官方的Go編譯器工具鏈。本文檔重點介紹gc Go編譯器和工具(6g,8g等)。有關如何使用gccgo(使用GCC后端的更傳統的編譯器)的信息,請參閱設置和使用gccgo。
Go編譯器支持三個指令集。不同體系結構的編譯器質量存在重要差異。
amd64(aka x86-64); 6g,6l,6c,6a 一個成熟的實現。編譯器具有有效的優化器(注冊器),并且可以生成良好的代碼(盡管有時gccgo可以做得更好)。
386(aka x86或x86-32); 8g,8l,8c,8a 類似于amd64端口。
手臂(又名ARM); 5g,5l,5c,5a 僅支持Linux二進制文件。沒有其他端口廣泛使用,因此沒有經過全面測試。
除了底層操作系統接口代碼之類的內容外,所有端口的運行時支持都是相同的,包括標記清除垃圾收集器,有效的數組和字符串切片以及對有效的goroutine(例如堆棧)的支持。按需增長和收縮。
編譯器可以針對FreeBSD,Linux,NetBSD,OpenBSD,OS X(Darwin)和Windows操作系統。下面的環境變量討論中列出了支持的全套組合。
在服務器上,通常將目標amd64
平臺作為目標。
請注意,Go以編譯速度而聞名。在部署服務器程序時,我不會在開發計算機上針對不同的平臺進行構建:我會部署源代碼,并直接在生產服務器上進行編譯。從Go1開始,我從來沒有在一個平臺上編譯過代碼,而沒有在另一個平臺上編譯過代碼。
在Windows上,我可以exe
在開發計算機上exe
進行安裝,并將其發送給從未安裝過Go相關內容的人們都沒有問題。
- 2 回答
- 0 關注
- 293 瀏覽
添加回答
舉報