Mac下交叉编译linux golang程序

Mac下交叉编译linux golang程序,第1张

一、背景介绍

    闲来无事,申请了台aws服务器在家搞点小东东,用golang做了个小东东,想放上去。自己的电脑是mac电脑,起初忘记了交叉编译的事,直接编译了下直接扔到aws,运行的时候出现了不可以运行的二进制格式提示。

二、交叉编译的过程

     1、随手百度了下,很多文章都写的“CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build”(不知你搜索到的是不是这个结果),看到这也挺简单,分别是禁用cgo,指定目标系统,指定目标CPU体系架构,然后编译。

  按照百度出来的建议,尝试在电脑上编译了下,提示如下错误,如果没有出现错误的可以不用往下看了哈。

2、如第一步所述,是将CGO关闭的状态,如果程序用到了CGO,是不是就需要将CGO放开?将CGO放开又会是什么现象?具体如下:

从上述的错误信息可以看出来,环境变量是生效的,确实是linux体系架构了。

3、继续百度,https://blog.csdn.net/zhaoli081223/article/details/121255583 终于发现这篇文章非常不错,在这里和大家分享下,按照文章的 *** 作就可以解决问题了,而且里面有非常详细的讲解。

mac下编译器默认编译的是mac os x的可执行文件。

编译centos上的可执行文件的时候需要交叉编译。

golang的交叉编译很容易,情况用下面这条命令 GOOS=linux GOARCH=amd64 go build ./文件

只需要指定目标 *** 作系统的平台和处理器架构即可:

因为不支持CGO,所以要禁用CGO

然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。

Mac 下编译 Linux 和 Windows 平台 64位 可执行程序:

Linux下编译 Mac 和 Windows 平台64位可执行程序:

Windows下编译Mac平台64位可执行程序:

整个过程看起来非常简单,运行起来也非常简单,调用make release命令,并给VERSION变量赋值不同的版本号即可:

命令会编译出不同平台可运行的压缩包:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8172903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存