Home  >  Article  >  Backend Development  >  Implement Golang cross-platform compilation

Implement Golang cross-platform compilation

Go语言进阶学习
Go语言进阶学习forward
2023-07-21 10:03:391101browse

Cross-platform compilation

Cross-platform compilation, also called cross-compilation, I can do it on the win platform on, compiled into an executable file on the Linux platform.

This is also the reason why Go is so popular. For languages ​​​​such as java, python, php, etc., we usually develop on the win platform and deploy on linux during deployment. Third-party dependencies are more troublesome, not only tiring to develop, but also tiring to operate and maintain. Although Docker now solves this pain point, it should still not be as comfortable as native ones.

If you use Go, no matter what third-party dependencies it is, it will only be packaged into an executable file and deployed directly immediately, and in a high-concurrency way. You don’t need Nginx, but you don’t have to worry about concurrency issues at all.


Example

Compile on win platform into linux platform executable document. cmd Execute the following commands in sequence:

SET CGO_ENABLED=0  // 禁用CGO
SET GOOS=linux  // 目标平台是linux
SET GOARCH=amd64  // 目标处理器架构是amd64

Implement Golang cross-platform compilation

然后执行go build,得到的就是能够在linux上,可执行的文件。

Implement Golang cross-platform compilation

我现在将这个文件上传到我的云服务器上,如下图所示。

Implement Golang cross-platform compilation

之后执行,可以看到,我云服务器上连Go环境都没,但是仍然可以执行成功。

Implement Golang cross-platform compilation

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

The above is the detailed content of Implement Golang cross-platform compilation. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:Go语言进阶学习. If there is any infringement, please contact admin@php.cn delete