【Golang】Windows与Linux交叉编译
大家好 我是寸铁👊
总结了一篇【golang】Windows与Linux交叉编译的文章✨
喜欢的小伙伴可以点点关注 💝
问题背景
今天寸铁想将Windows
中的程序部到Linux
下跑,我们知道在从Windows
与Linux
下要进行交叉编译,通常是在Windows
中打包成一个文件在再Linux
下编译执行,我们管这个过程叫做操作系统的交叉编译。
那交叉编译具体怎么做呢?其实很简单,不过网上的博客的一些命令笔者实操过,发现不对!
小伙伴们要想实现交叉编译,看笔者的文章即可,减少大量踩坑的时间。
往期好文
上一篇优质长文,也是与打包程序相关的,感兴趣的朋友可以了解一下!
【Golang】Golang使用embed加载、打包静态资源文件
感谢社区的收录 💝 💝 💝
工具
在正式进入交叉编译之前,我们先来介绍一下打包成可执行文件的工具go build
。
go build
常用于打包成一个可执行文件,不同的操作系统可执行文件的格式不同。
如Windows
操作系统,该文件为exe
文件。
如Linux
操作系统,该文件为sh
文件。
使用命令如下:
go
go build xx.go
注意:直接在
windows
环境中使用上述命令,得到的是exe
文件,不能在Linux
上运行,在Linux
上运行的是sh
脚本文件!!!
交叉编译
在简单了解了工具的使用命令后,如果我是在
Windows
环境,怎么打包成一个sh
文件,使得他可以在linux
下运行呢?
Windows配置
使用如下配置命令:
go
go env -w GOOS=linux
再使用go build
命令,打包你编写的go
文件。
go
go build redisTest.go
之后就会在文件夹的位置看到这个图标,代表打包成功!
注意:这里如果打包后为
redisTest.exe
说明打包成Linux
的可执行文件失败,要检查你的配置命令是不是正确,建议直接就是复制过去,再修改一下文件名即可,不会出错。
打包成linux
文件后,记得要切换为Windows
环境,确保其他文件正常编译,使用如下命令:
go
go env -w GOOS=windows
Linux使用
在Linux
操作系统中使用上面命令打包好的sh
文件
先把文件上传到你的文件目录中,再使用命令如下:
shell
./文件名
如我这里是运行searchConsul
就是直接./searchConsul
即可。
这样就能愉快的在
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解决方案