手把手教你實現 Golang 跨平臺編譯

前言

大家好,我是星期八,是一個每天都要在鏡子前給自己梳僅剩三根頭髮的三年碼農。

上面的文章,我們已經搭建了 Go 語言環境,可以戳這裏:手把手帶你進行 Golang 環境配置,還實現了第一個 Go 程序,本次我們來安排一下如何實現跨平臺編譯。

跨平臺編譯

跨平臺編譯,也叫交叉編譯,我可以在 win 平臺上,編譯成 linux 平臺可執行的文件。

這也是 Go 備受青睞的原因,像 java,python,php 等語言,我們開發一般是在 win 平臺上開發,部署的時候在 linux 上部署,在處理第三方依賴是比較麻煩,不僅開發累,運維也累,雖然現在有 docker 解決了這個痛點,但是應該還是沒原生來的舒服。

如果使用 Go 的話,不管是什麼第三方依賴,最終只會打包成一個可執行文件,直接部署即刻,並且是高併發方式,心再大一點,連 Nginx 都不用,但是一點不用擔心併發問題。

示例

在 win 平臺上編譯成 linux 平臺可執行文件。cmd下依次執行以下命令:

SET CGO_ENABLED=0  // 禁用CGO
SET GOOS=linux  // 目標平臺是linux
SET GOARCH=amd64  // 目標處理器架構是amd64

然後執行go build,得到的就是能夠在 linux 上,可執行的文件。

我現在將這個文件上傳到我的雲服務器上,如下圖所示。

之後執行,可以看到,我雲服務器上連 Go 環境都沒,但是仍然可以執行成功。

Windows 下編譯 Mac 平臺 64 位可執行程序:

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build

Mac 下編譯 Linux 和 Windows 平臺 64 位 可執行程序:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Linux 下編譯 Mac 和 Windows 平臺 64 位可執行程序:

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

結尾

我是碼農星期八,本文到此就先告一段落咯。這篇文章主要介紹了 Go 語言跨平臺編譯的概念和具體實現,下篇文章正在籌備中。如果你覺得文章還可以,記得點贊支持我們哈。感謝你的閱讀~~

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/rZdleta-j9JjcRAWYuYDKA