当前位置:首页 > Golang杂记 > 正文内容

windows下编译linux可执行程序

9个月前 (10-01)Golang杂记676

开发中,我们可以在Windows下编译Linux 64位可执行程序,首先获取目标系统所支持的构架,比如x86/x64/arm64/arm 等等。

在 linux 系统中,我们可以使用命令 uname -a 查看系统的一些信息;以我的机器来说,

如果你看到 arm64之类的字样,表明你的系统是支持这种架构的程序的。

[zhoubotong@iZ8vb6fwt8t7vnv7023zs6Z ~]$ uname -a
Linux iZ8vb6fwt8t7vnv7023zs6Z 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

这里我的是x86架构。所以我们只需要将写好的go语言编译成这类架构的Linux程序即可。

在 windows 系统 CMD下,输入命令:go env 查看 go的环境变量。

其中有两个参数对于跨平台编译至关重要。一个为 %GOOS,一个为%GOARCH。在Windows系统下,%GOOS默认为 windows,%GOARCH 为 amd64 (根据系统不同,可能有所不同)。

要将程序编译为Linux程序,需设置 %GOOS 为 linux,且%GOARCH为Linux系统支持的架构。


在CMD下,输入(注意在CMD窗口执行,不要在Git Bash来执行命令):

SET GOOD=linux
SET GOARCH=adm64
go build xxx.go

编译GO程序即可,如无意外,会在工作目录生成一个无扩展名的文件,我们就可以在Linux系统下运行它了。

比如这里会生成一个没有后缀的xxx二进制文件,将该文件放入linux系统某个文件夹下赋予权限

chmod 777 xxx

执行 ./xxx

提醒:Linux系统下运行程序需要为新文件赋予可执行权限

我们可以使用这种方法在Windows系统下编译出其它平台的可执行程序,相反,也可以在Linux系统下编译出Windows平台的可执行程序。

如果想改回来,改下GOOS即可:

set GOOS=windows


    扫描二维码推送至手机访问。

    版权声明:本文由周伯通的博客发布,如需转载请注明出处。

    本文链接:http://zhoubotong.site/post/31.html

    分享给朋友:

    相关文章

    谈谈go中sync.cond的用法和理解

    引入不管从说明还是用法来看,Cond都是sync包中最难理解和使用的功能。golang官方注释中说,“Cond implements a condition variable, a rendezvou...

    Go 数组合并去重和排序

            Sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。 但是这四种排序方法是不公开的,...

    关于go协程同步的几种方法

    这里咋们简要介绍下关于go中协程的几种同步方法。先说下概念性的:协程概念简要理解协程有点类似线程,是一种更为轻量级的调度单位,但协程还是不同于线程的,线程是系统级实现的,常见的调度方法是时间片轮转法,...

    Go map定义的几种方式以及修改技巧

    直入正题,我们看下以下代码:package main import (    "encoding/json"  ...

    Go channel 协程为什么是安全的

        Channel跟java/php的 thread不一样,首先channel是协程不是线程。channel不会产生新的线程,自然不会涉及到新的进程或者线程...

    发表评论

    访客

    看不清,换一张

    ◎欢迎参与讨论,请在这里发表您的看法和观点。