【Golang】Windows与Linux交叉编译保姆级教程

2024-06-04 4241阅读

【Golang】Windows与Linux交叉编译

大家好 我是寸铁👊

总结了一篇【golang】Windows与Linux交叉编译的文章✨

喜欢的小伙伴可以点点关注 💝

问题背景

今天寸铁想将Windows中的程序部到Linux下跑,我们知道在从Windows与Linux下要进行交叉编译,通常是在Windows中打包成一个文件在再Linux下编译执行,我们管这个过程叫做操作系统的交叉编译。

那交叉编译具体怎么做呢?其实很简单,不过网上的博客的一些命令笔者实操过,发现不对!

小伙伴们要想实现交叉编译,看笔者的文章即可,减少大量踩坑的时间。


往期好文

上一篇优质长文,也是与打包程序相关的,感兴趣的朋友可以了解一下!

【Golang】Golang使用embed加载、打包静态资源文件

感谢社区的收录 💝 💝 💝

【Golang】Windows与Linux交叉编译保姆级教程 第1张


工具

在正式进入交叉编译之前,我们先来介绍一下打包成可执行文件的工具go build。

go build常用于打包成一个可执行文件,不同的操作系统可执行文件的格式不同。

如Windows操作系统,该文件为exe文件。

如Linux操作系统,该文件为sh文件。

使用命令如下:

go build xx.go

注意:直接在windows环境中使用上述命令,得到的是exe文件,不能在Linux上运行,在Linux上运行的是sh脚本文件!!!


交叉编译

在简单了解了工具的使用命令后,如果我是在Windows环境,怎么打包成一个sh文件,使得他可以在linux下运行呢?

Windows配置

使用如下配置命令:

go env -w GOOS=linux

【Golang】Windows与Linux交叉编译保姆级教程 第2张


再使用go build命令,打包你编写的go文件。

go build redisTest.go

之后就会在文件夹的位置看到这个图标,代表打包成功!

【Golang】Windows与Linux交叉编译保姆级教程 第3张

注意:这里如果打包后为redisTest.exe说明打包成Linux的可执行文件失败,要检查你的配置命令是不是正确,建议直接就是复制过去,再修改一下文件名即可,不会出错。


打包成linux文件后,记得要切换为Windows环境,确保其他文件正常编译,使用如下命令:

go env -w GOOS=windows

【Golang】Windows与Linux交叉编译保姆级教程 第4张


Linux使用

在Linux操作系统中使用上面命令打包好的sh文件

先把文件上传到你的文件目录中,再使用命令如下:

./文件名

如我这里是运行searchConsul就是直接./searchConsul即可。

【Golang】Windows与Linux交叉编译保姆级教程 第5张

这样就能愉快的在Linux跑go编写的程序啦!


看到这里的小伙伴,恭喜你又掌握了一个技能👊

希望大家能取得胜利,坚持就是胜利💪

我是寸铁!我们下期再见💕


往期好文💕

保姆级教程

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【Go-Zero】手把手带你在goland中创建api文件并设置高亮


报错解决

【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案

【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案

【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案

【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案


Go面试向

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]