go语言终端交叉编译的事项windows编译其它平台软件包

news2024/11/26 12:41:07

交叉编译的终极版本[以此为准]:

windows编译窗口目前分为cmd窗口,powershell窗口,这两个里面运行的命令不一样。

1.cmd窗口编译;

在windows10之前的系统版本上使用cmd命令行可以使用命令

CMD命令行中
在CMD命令行中编译(示例编译64位linux程序),【打开一个cmd窗口一行行执行下面的命令;】

// 设置Linux编译环境
SET CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux

// 开始编译
go build -o ./build/ ./main.go

备注:修改的环境只是在当前的cmd窗口修改,不影响整体环境,也就是这个窗口修改后,关闭,在重新打开就是还是默认的配置内容;

2.powershell窗口编译;

在powershell命令行中
在powershell命令行中编译(示例编译64位linux程序)

// 设置Linux编译环境
$env:CGO_ENABLED="0"
$env:GOOS="linux"
$env:GOARCH="amd64"

// 开始编译
go build ./build/ ./main.go

3.设置环境后,在自己的命令行窗口运行 go env命令,查看你刚刚修改的参数是否修改了,修改后,即可进行编译;

set GOARCH=amd64
set GOOS=linux

3.1 cmd环境下的参数修改成功式样;

3.2powershell环境下的参数修改成功


4.这个窗口关闭后,默认参数还是原来的参数;,不用恢复命令








下面是历史版本;可以借鉴,但是不建议使用




===============================================

一、可以使用的编译环境

go env 查看编译的环境


1.编译linux 64环境[centos7以及以上版本]
go env -w GOOS="linux"
go env -w GOARCH="amd64"

=============================
2.编译linux 32环境[centos6以及以下版本]
go env -w GOOS="linux"
go env -w GOARCH="386"

3.windows10默认信息【修改上述linux环境的时候,在修复后回去】


系统默认:
go env -w GOOS="windows"
go env -w GOARCH="amd64"

备注:时刻关注 go env  命令查询上面的参数是否是你需要的

修改后的效果go env

使用后再修改会默认信息

编译命令:

go build -o ./"要生成的文件 .\源代码

go build -o ./w1N386 .\w1.go
 


 打包后,把默认环境修改回去

win10系统默认:
go env -w GOOS="windows"
go env -w GOARCH="amd64"



下面都是历史内容:


==========================================

下面的的内容在win10 go1.20的版本上编译还是不好用



二、交叉编译事项

2.1查询当前交叉编译支持的版本【操作都是在编译器golangd的命令行下】

  1. go tool dist list

  2. 查询当前交叉编译支持的版本

go tool dist list

 2.2golang 交叉编译牵涉到三个变量

 
golang 交叉编译牵涉到三个变量
 
 
CGO_ENABLED = 0   #表示设置CGO工具不可用,使用go自己的编译器
GOOS:#目标操作系统
GOARCH  #表示程序构建环境的目标计算架构 比如:386,amd64,arm,arm64,ppc64,ppc64le,mips,mipsle,mips64,mips64le
386为32位 amd64位64位系统
 

 2.3编译命令的运行办法:【一个个命令运行,不要都是写在一行,单独都是一行】

在golang的终端修改,不影响整体的环境,修改后,你可以在外面找个终端,go env原来的环境保持不变。

linux 386{32位环境的配置}

SET CGO_ENABLED=0  
SET GOOS=linux  
SET GOARCH=386 
go build -o ./w1  w1.go
 

 

 2.4常在windows下编译其它平台的命令;

linux x64{64位环境的配置}

SET CGO_ENABLED=0  
SET GOOS=linux  
SET GOARCH=amd64
go build -o

./w1  w1.go

2.5注意事项

尽量不要用cmd的环境编译,在golang中编译或者

用powershell编译

 

 在运行刚刚的命令进行编译



补充资料;========可以借鉴,没有必要使用!!!========

一、交叉编译环境问题解决

可选步骤:不一定好用


这个可以修改,成cmd的方式,但是后期再gobuild编译的时候容易出错

 是不是cmd的版本低,不能支持go编译了

我是在windows10上采用交叉编译的办法,编译linux下的程序包括x64,i386也就是64位和32位的程序,使用默认的golang的终端编译报错

 那如何修改成为“cmd”的终端的方式呢;

1.修改终端默认的powershell

打开golangd之后直接进去setting(设置)——>tools(工具)——>terminal(终端)——>shellpath(shell路径)——>点击右边那个指定到你下载的路径就可以了找到exe文件——>apply(应用)——>close(关闭)就完成

 

 

 //windows下使用go编译器编译32位linux可执行程序
SET CGO_ENABLED=0  SET GOOS=linux  SET GOARCH=386 go build w1.go

 

 这回就是没有报错,问题解决

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

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

相关文章

C++-string类的模拟实现

本博客基于C官方文档当中给出的string类当中的主要功能实现,来作为参照,简单模拟实现 My-string 。 对于C当中的string类的介绍,在之前的几篇博客当中有说明,如有问题,请参照一下两个博客文章进行参考: (2…

CTF 1和0

一、 对于此类型数据,将其复制到excel中,将0所在位置背景色设置为白色,将1所在的位置设置为黑色 如图所示 二、添加定位符 对于定位符来说,同样可以在excel表中添加1,且1所在单元格为黑色表示定位符,如下…

07 - 线性表的类型定义 - 循环单向链表

前两节我们已经学习了单链表和双链表的概念以及具体的实现过程,其中有一个问题,值得注意,这样的链表有一个共同特征,就是尾节点指向 null,可以说是一次性的,像是糖葫芦。想象一下,如果此时,糖葫芦变成了手串,也就意味着头尾相连,形成闭环,这就是单向链表的另外一种形…

提高工作效率的文件管理软件实践方法

在现代社会中,高效的工作效率是保持竞争力的关键。随着信息技术的不断发展,文件管理软件成为提高工作效率的重要工具之一。 一个好的文件管理软件需要具备直观友好的用户界面。用户界面的清晰易操作让用户更便捷地找到所需文件。在软件开发的初期&#…

KMP 算法推演总结

title: KMP 算法推演总结 date: 2023-07-17 16:07:13 tags: 算法 categories:数据结构与算法 cover: https://cover.png feature: false KMP 算法推演 可先见 Fan’s Web 字符串匹配的 BF 算法、RK 算法部分,后面的 BM 算法及 KMP 算法可以搭配一起看 KMP 算法的…

ADB初识

ADB是Android Debug Bridge,是一个命令行程序。abd可以从计算机上通过USB控制Android手机设备。可以使用ADB复制文件、安装和卸载应用程序,运行shell命令等。 ADB的下载配置 Windows版本:https://dl.google.com/android/repository/platform…

ICV报告:确保城市未来产业发展成功的策略

近日,专注于前沿科技领域的国际咨询机构ICV TAnK发布了《确保城市未来产业发展成功的策略》报告。报告的主要内容包括:未来产业的背景情况和发展趋势;在城市中发展未来产业的重要性;对未来产业发展面临的五大困难和城市在发展未来…

Spring Batch之读数据库——JdbcCursorItemReader之自定义PreparedStatementSetter(三十八)

一、自定义PreparedStatementSetter 详情参考我的另一篇博客: Spring Batch之读数据库——JdbcCursorItemReader(三十五)_人……杰的博客-CSDN博客 二、项目实例 1.项目实例 2.代码实现 BatchMain.java: package com.xj.dem…

如何使用 SSH 远程控制一台 Windows 服务器

如何使用 SSH 远程控制一台 Windows 服务器 查了一下,Windows 上其实也是有 SSH 服务器的,只不过默认是没有装的,这里只需要安装一个 OpenSSH 服务器就好了。 Win10 的话,就在设置里面可以安装,从开始菜单打开“设置…

MYSQL表操作(DML,DDL)

建表并插入数据: mysql> create table worker(-> dept_id int(11) not null,-> emp_id int (11) not null,-> work_time date not null,-> salary float(8,2) not null,-> poli_face varchar(10) not null default 群众,-> name varchar(20) …

IIC的再认识

IIC介绍 关于IIC的基本概念,其实在学习89C52的时候已经大致了解过了,且由于STM32支持了IIC协议,所以在STM32中使用IIC可以直接调用HAL库的库函数: HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c,uint16_t DevAdd…

SAP ABAP 报表程序实现下载文件及上传 Excel 并解析

步骤1: 事务代码 SMW0 选择二进制数据选项点击上方按钮。 点击新建按钮输入名称和描述,上传模版文件。 案例传入 EXCEL 如下: 创建好资源库对象结果如下。 步骤2:报表效果展示 点击按钮选择上传的文件。 解析 Excel 文件结果…

酷开科技大屏营销,撬动营销新增量

5G、人工智能、元宇宙等技术的发展促使数字营销的内容、渠道、传播方式发生了一系列变化;存量竞争下,增长成为企业更加迫切、更具挑战的课题,品牌营销活动越来越围绕“生意增长”和“提效转化”的目标展开。 如今的市场环境下,产…

计算机毕业论文选题推荐|软件工程|信息管理|数据分析|系列一

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程|信息管理 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于requests多线程…

BERT系列算法解读:(RoBERTa/ALBERT/DistilBERT/Transformer/Hugging Face/NLP/预训练模型/模型蒸馏)

BERT(Bidirectional Encoder Representations from Transformers,基于Transformers的双向编码器表示)系列算法在自然语言处理任务中是必不可少的经典模型,当初第一代GPT模型发布的时候,坐了冷板凳,罪魁祸首…

【C++】-list的具体使用

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

漏洞复现畅捷通CRM SQL注入

免责声明 术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用…

.NET SqlSuger初次使用

文章目录 前言SqlSuger测试DB Fisrt和CodeFirst 前言 我之前在B站上面发视频说如何使用EF框架去生成实体类。我当时做了Mysql,Sql server,Sqlite的适配。但是下面评论区说SqlSuger很好用,而且很多公司都用SqlSuger。 B站视频:C#如何快速开发数据库业务…

VsCode连不上Server,但SSH可以

造成的原因可能是因为Client处Vscode更新与Server端"~/.vscode-server"文件夹内的版本不匹配,通常来说直接删除该文件夹即可。 但是有时该文夹内有几个问价被占用:“resource busy”,且该文件处于内核态, 通过:“lsof…

Nginx学习之一撸到底

一、Nginx环境搭建 ❶首先创建Nginx的目录并进入: [rootlocalhost]# mkdir /soft && mkdir /soft/nginx/ [rootlocalhost]# cd /soft/nginx/ ❷下载Nginx的安装包,可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包…