golang初学:交叉编译

news/2024/10/13 18:26:14

go version go1.22.1 windows/amd64

Windows 11 + amd64

x86_64 x86_64 GNU/Linux

---

 

序章

golang 支持 跨平台,支持的方式 是 在一个平台 编译其它平台的可执行程序。

本文 介绍 Windows 11(开发主机) 上 编译 Linux(目标主机) 上的可执行程序。

 

#go build

 

开发主机 和 目标主机 的架构相同:x86_64

 

执行

查看 go 环境变量:

> go env

set GO111MODULE=on
set GOARCH=amd64

set GOHOSTARCH=amd64
set GOHOSTOS=windows

set GOOS=windows

……

 

修改其中的 GOOS 为 linux(全小写),命令:

>go env -w GOOS="linux"

 

执行编译:

>go build

编译 成功,生成 web001 文件——Linux 可执行的。

 

 

拷贝 web001 到 目标主机(scp 命令):

scp web001 username@iporhost:/target/directory

成功拷贝过去后,web001 是 不可执行的,使用 chmod 修改权限即可:

# chmod +x web001

 

执行&测试 web001:

# nohup ./web001 &
# ps -ef | grep web
root      439426  439378  0 20:31 pts/1    00:00:00 ./web001

web001 是一个 web程序,使用 curl 测试接口,成功,不再赘述。

 

改名

将 web001 改名为 app001,运行,成功。

 

就这么简单?

 

TODO 除了 amd64(x86_64)外,还支持那些架构呢?看了 go help build 命令的内容,应该还支持下面的 os+芯片架构 组合:

Supported only on

linux/amd64, freebsd/amd64, darwin/amd64, darwin/arm64, windows/amd64,
linux/ppc64le and linux/arm64 (only for 48-bit VMA).

两个 *asn 还提到了:linux/loong64(龙芯)。

还没用过这些参数。

 

说明,介绍 GOOS、GOARCH 的 官方文档 今天看到过,但现在 找不到了。

 

命令小结

  • >go env -w GOOS="linux"
    >go build
    >scp web001 username@iporhost:/target/directory
  • # chmod +x web001
    # nohup ./web001 &
    # ps -ef | grep web
    # curl

 

---END---

 

本文链接:

https://www.cnblogs.com/luo630/p/18170501

ben发布于博客园

参考资料

1、go build 成不同环境的方法:mac、linux、windows
php-goland@疯狂编程爱好者
已于 2022-10-10 17:20:11 修改
https://blog.csdn.net/qq_41672878/article/details/119410602

2、Win10系统下设置Go环境变量
https://www.cnblogs.com/yunfan1024/p/13497686.html

3、

 

ben发布于博客园

ben发布于博客园

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/26936.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

DRF之三大认证

一、认证 1、自定义认证 在前面说的 APIView 中封装了三大认证,分别为认证、权限、频率。认证即登录认证,权限表示该用户是否有权限访问接口,频率表示用户指定时间内能访问接口的次数。整个请求最开始的也是认证。 (1)需求登陆认证 用户登陆成功--》签发token 以后需要登陆…

Vue入门到关门之Vue项目工程化

一、创建Vue项目 1、安装node环境官网下载,无脑下一步,注意别放c盘就行Node.js — Run JavaScript Everywhere (nodejs.org)需要两个命令npm---->pip node--->python装完检查一下,hello world检测,退出crtl+c2、搭建vue项目环境装cnpm 这个包,下载东西会快很多,装模…

第6讲需求分析--uml用例图

用例图 一.识别参与者 参与者在系统外所以画图时画在框外。系统用例图比业务用例图更完善所以经常让画的是系统用例图。在商品销售系统里:参与者是顾客。 在会计系统里:参与者是商品销售系统。 二.关系 1.参与者之间 泛化关系子指向父 2.参与者和用例之间 关联关系3.用例和用…

认知提升的方法

认知提升的方法一、什么是认知 经验是对于过往经历的总结归纳,当把这种经验传授给别人时,这种经验对别人来说就是知识。所以,知识是人脑对客观事物的信息沉淀。 技能是人们通过练习而获得的动作方式和系统,例如操作技能中的PS技术、木工技术、电工技术、水工技术等,而能力…

c#胖东来小程序自动购物程序(接单,windows桌面程序、linux程序、网络应用等等)

一、程序效果 自动打开胖东来小程序,自动购物 二、实现 先截屏,然后利用opencv库识别下一步按键所在位置,然后使用mouse_event控制鼠标,模拟人的动作 第一步,截取屏幕static Bitmap CaptureScreen() {int screenWidth = Screen.PrimaryScreen.Bounds.Width;int screenHeig…

优先级翻转实验以及分析现象

优先级翻转实验以及分析现象 优先级翻转指的是高优先级的任务反而慢执行,低优先级的任务反而优先执行。优先级翻转在抢占式内核中是非常常见的,但是在实时操作系统中是不允许出现优先级翻转的,因为优先级翻转会破坏任务的预期顺序,可能会导致未知的严重后果。上图中三个任务…

十日冲刺其六

今天完成了:用户可以自主删除自己发表的空间动态 遇到的困难:不能在浏览空间时进行删除动态,限制因素较多 明天打算,优化一下动态删除功能

将社会脆弱性纳入高分辨率全球洪水风险绘图

贡献 将高分辨率流洪水模型的年平均超标概率估计值与网格化人口和贫困数据相结合,创建了 90 米分辨率的全球洪水脆弱性调整风险指数(VARI Flood)。该指数提供了国家内部或国家之间相对风险的估计值,并通过识别以高密度和高社会脆弱性为特征的 "热点地区",改变了…