Go工程化-交叉编译概述

电子说

1.2w人已加入

描述

概述

交叉编译,也称跨平台编译,就是在一个平台上编译源代码,生成结果为另一个平台上的可执行代码。这里的平台包含两个概念:体系架构 (如 AMD, ARM) 和 操作系统 (如 Linux, Windows)。同一个体系架构可以运行不同的操作系统,反过来,同一个操作系统也可以运行在不同的体系架构上。

Go 实现跨平台编译的思想其实很简单:通过保存可以生成最终机器码的多份翻译代码, 在编译时根据 GOARCH=体系架构 和GOOS=操作系统参数进行初始化设置, 最终调用对应平台编写的特定方法来生成机器码,从而实现跨平台编译。

例子

下面的例子统一以 amd64 作为体系架构参数,读者请根据自己的环境更换对应参数。

Mac

编译为 Linux 代码

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

编译为 Windows 代码

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

Linux

编译为 Mac 代码

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

编译为 Windows 代码

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

Windows

编译为 Mac 代码

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

编译为 Linux 代码

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分