go build 成不同環(huán)境的方法:mac、linux、windows

我們平時的開發(fā)環(huán)境和真正要部署的環(huán)境經(jīng)常會遇到要不一樣的情況,前面說的環(huán)境主要是指CPU的架構(gòu)和操作系統(tǒng),例如在X86的平臺上編譯的可執(zhí)行文件在ARM平臺上是不能運行的,反之亦然。這時候就需要交叉編譯,交叉編譯是在一個平臺上生成另一個平臺上的可執(zhí)行文件。Golang 支持交叉編譯,而且提供了非常方便的交叉編譯方式。

Go交叉編譯,主要涉及到以下幾個環(huán)境變量的設(shè)置: GOARCH、GOOS和CGO_ENABLED。

GOARCH:編譯目標平臺的硬件體系架構(gòu)(amd64, 386, arm, ppc64等)。

GOOS:編譯目標平臺上的操作系統(tǒng)(darwin, freebsd, linux, windows)。

CGO_ENABLED:代表是否開啟CGO,1表示開啟,0表示禁用。由于CGO不能支持交叉編譯,所以需要禁用。

具體的說明可通過輸入命令go help environment查看?:

$ go help environment

...

? ? GOARCH

The architecture, or processor, for which to compile code.

Examples are amd64, 386, arm, ppc64.

...

? ? GOOS

The operating system for which to compile code.

Examples are linux, darwin, windows, netbsd.

...

? ? CGO_ENABLED

Whether the cgo command is supported. Either 0 or 1.

編譯 Linux 64位可執(zhí)行程序:

# X86

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

# ARM

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build main.go

編譯Windows ?64位可執(zhí)行程序:

# X86

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

# ARM

CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build main.go

編譯 MacOS 64位可執(zhí)行程序

# X86

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go

# ARM

CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build main.go

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容