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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java常用正则表达式
django实现类似触发器的功能
![](https://img.aspxhome.com/file/2023/7/99407_0s.jpg)
Python构建自动在线刷视频的实现
![](https://img.aspxhome.com/file/2023/6/89396_0s.jpg)
Python标准库uuid模块(生成唯一标识)详解
![](https://img.aspxhome.com/file/2023/8/127678_0s.jpg)
Python快速转换numpy数组中Nan和Inf的方法实例说明
sql处理数据库锁的存储过程分享
PHP异步调用socket实现代码
关于xmlhttp乱码的解决方法
Python中logging日志的四个等级和使用
![](https://img.aspxhome.com/file/2023/8/76688_0s.png)
Python列表推导式的使用方法
python 算法题——快乐数的多种解法
浅析SQL Server 2008企业级新特性
python实现xml转json文件的示例代码
MySQL limit分页大偏移量慢的原因及优化方案
修改python plot折线图的坐标轴刻度方法
![](https://img.aspxhome.com/file/2023/9/115639_0s.jpg)
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
举例讲解Python设计模式编程的代理模式与抽象工厂模式
python调用ffmpeg命令行工具便捷操作视频示例实现过程
python正则表达式实现自动化编程
pycharm远程开发项目的实现步骤
![](https://img.aspxhome.com/file/2023/5/102925_0s.png)