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

【Golang】Windows与Linux交叉编译

大家好 我是寸铁👊

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

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

问题背景

今天寸铁想将Windows中的程序部到Linux下跑,我们知道在从WindowsLinux下要进行交叉编译,通常是在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即可。

这样就能愉快的在Linuxgo编写的程序啦!


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

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

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


往期好文💕

保姆级教程

【保姆级教程】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稳定的有序遍历的方式

相关推荐
雨浓YN22 分钟前
OPC UA 通讯开发笔记 - 基于本地dll文件
windows·笔记
是真的小外套30 分钟前
第十五章:XXE漏洞攻防与其他漏洞全解析
后端·计算机网络·php
原来是猿40 分钟前
Linux进程信号详解(二):信号产生
linux·运维·服务器
大强同学1 小时前
Obsidian CLI + Claude Code = 王炸组合
人工智能·windows·ai编程·cli
Bert.Cai1 小时前
Linux cd命令详解
linux·运维
扑火的小飞蛾2 小时前
Kali Linux 安装 OpenClaw 详细教程
linux·运维·服务器
ybwycx2 小时前
SpringBoot下获取resources目录下文件的常用方法
java·spring boot·后端
王琦03182 小时前
第二次作业
linux·运维·服务器
Bert.Cai2 小时前
Linux mkdir命令详解
linux·运维
超绝振刀怪2 小时前
【Linux进程状态:僵尸进程、孤儿进程和调度基础】
linux·僵尸进程·孤儿进程·进程状态