Golang在Mac、Linux、Windows下如何交叉编译的实现

作者:磐石区 时间:2024-02-23 06:00:02 

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。

Mac 下编译 Linux 和 Windows 64位可执行程序


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

Linux 下编译 Mac 和 Windows 64位可执行程序


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

Windows 下编译 Mac 和 Linux 64位可执行程序


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

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
  • GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)

  • GOARCH:目标平台的体系架构(386、amd64、arm)

交叉编译不支持 CGO 所以要禁用它

上面的命令编译 64 位可执行程序,你当然应该也会使用 386 编译 32 位可执行程序

在网络上的诸多教程中可能会看到下面的编译命令


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

其中CGO_ENABLED=0的意思是使用C语言版本的GO编译器,参数配置为0的时候就关闭C语言版本的编译器了。自从golang1.5以后go就使用go语言编译器进行编译了。在golang1.9当中没有使用CGO_ENABLED参数发现依然可以正常编译。当然使用了也可以正常编译。比如把CGO_ENABLED参数设置成1,即在编译的过程当中使用CGO编译器,我发现依然是可以正常编译的。

实际上如果在go当中使用了C的库,比如import "C"默认使用go build的时候就会启动CGO编译器,当然我们可以使用CGO_ENABLED=0来控制go build是否使用CGO编译器。

很多博客都提到要先增加对其它平台的支持,但是我跳过那一步,上面所列的命令也都能成功,且得到我想要的结果,可见那一步应该是非必须的,或是我所使用的 Go 版本已默认支持所有平台。

来源:https://blog.csdn.net/panshiqu/article/details/53788067

标签:Golang,交叉编译
0
投稿

猜你喜欢

  • java常用正则表达式

    2023-04-24 11:38:36
  • django实现类似触发器的功能

    2023-10-10 22:36:41
  • Python构建自动在线刷视频的实现

    2021-12-17 15:53:37
  • Python标准库uuid模块(生成唯一标识)详解

    2023-07-04 14:03:05
  • Python快速转换numpy数组中Nan和Inf的方法实例说明

    2021-11-12 06:24:03
  • sql处理数据库锁的存储过程分享

    2023-07-05 18:03:25
  • PHP异步调用socket实现代码

    2023-06-26 09:23:09
  • 关于xmlhttp乱码的解决方法

    2008-09-24 17:20:00
  • Python中logging日志的四个等级和使用

    2023-05-10 14:57:41
  • Python列表推导式的使用方法

    2023-05-10 07:01:46
  • python 算法题——快乐数的多种解法

    2021-12-25 06:32:43
  • 浅析SQL Server 2008企业级新特性

    2008-11-24 17:01:00
  • python实现xml转json文件的示例代码

    2023-09-29 23:52:50
  • MySQL limit分页大偏移量慢的原因及优化方案

    2024-01-25 14:28:30
  • 修改python plot折线图的坐标轴刻度方法

    2021-06-24 09:09:43
  • python 利用pywifi模块实现连接网络破解wifi密码实时监控网络

    2023-06-15 11:21:03
  • 举例讲解Python设计模式编程的代理模式与抽象工厂模式

    2021-08-13 06:23:49
  • python调用ffmpeg命令行工具便捷操作视频示例实现过程

    2023-12-19 07:48:22
  • python正则表达式实现自动化编程

    2022-01-08 12:24:33
  • pycharm远程开发项目的实现步骤

    2023-07-17 06:01:54
  • asp之家 网络编程 m.aspxhome.com