问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Go 语言交叉编译在 openwrt 上运行的程序

发布网友 发布时间:2024-10-08 17:00

我来回答

1个回答

热心网友 时间:2024-10-17 18:37

Go 语言的一大优势在于其简便的交叉编译功能,允许开发者生成适用于不同硬件平台与操作系统的程序。本文将详细记录如何在小米路由器 3G 上运行 Go 语言编写的程序,以供参考。

编译环境为 macOS 以及 Go 1.11 版本,目标运行环境为基于 OpenWRT 的路由器,其采用 MIPS 架构的 32 位处理器 MT7621,配置双核四线程,无浮点单元(FPU)。代码文件命名为 `hello.go`。

编译过程采用标准的 `go build` 命令,只需通过 `GOOS` 和 `GOARCH` 参数指定目标平台的操作系统与 CPU 架构。由于 MT7621 无 FPU,因此在编译时需特别指定使用 `softfloat` 软浮点,以确保程序中不包含浮点计算指令,避免非法指令错误。

在较早版本的 Go 需要借助第三方库实现 MIPS 平台的交叉编译,但 Go 1.11 版本已内置了对 MIPS 平台的支持,无需额外依赖。对于无 FPU 的处理器,可以通过在编译 OpenWRT 时打开内核的浮点模拟器来实现兼容性,但使用 `GOMIPS=softfloat` 指令同样能够满足需求。

编译完成后,通过 `scp` 命令将生成的可执行文件 `hello` 传输至目标平台并运行。程序执行一切正常,已成功在路由器上部署 Go 语言程序。

在编译过程中遇到的两个关键问题包括:

1. **Go 1.11 版本编译缓存问题**:在切换 `GOMIPS=softfloat` 与 `hardfloat` 时,编译结果并未变化,需手动清理缓存以获取正确的输出。通过在 GitHub 上查找对应 issue,并确认其已被修复后,更新至 Go 1.11.5 版本,问题得到解决。

2. **GOARCH 参数配置问题**:初始时将 `GOARCH` 设置为 `mips`,即 MIPS 处理器的大端架构,导致编译出的程序在执行时出现语法错误。经调查,`GOARCH` 参数可以设置为 `mips` 或 `mipsle`,分别对应大小端架构。考虑到 MT7621 为小端架构,修正 `GOARCH` 为 `mipsle` 后问题得以解决。
Go 语言交叉编译在 openwrt 上运行的程序

编译环境为 macOS 以及 Go 1.11 版本,目标运行环境为基于 OpenWRT 的路由器,其采用 MIPS 架构的 32 位处理器 MT7621,配置双核四线程,无浮点单元(FPU)。代码文件命名为 `hello.go`。编译过程采用标准的 `go build` 命令,只需通过 `GOOS` 和 `GOARCH` 参数指定目标平台的操作系统与 CPU ...

Load Port、SMIF

威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...

Go语言涉及CGO的交叉编译(跨平台编译)解决办法

在交叉编译中,GOOS和GOARCH用于指定构建的目标平台,通常选择Linux。在编译选项中,-ldflags参数用于定制编译指令。若项目中包含CGO,首先需要确保CGO_ENABLED保持开启状态。此时,我们需借助辅助编译工具来实现交叉编译。对于Mac平台,可以使用工具FiloSottile/musl-cross/musl-cross,通过brew安装后即可使用。...

openWRT 交叉编译程序 ./hello: line 1: syntax error: unexpected...

100 【*】下载的是svncosvn://svn.openwrt.org/openwrt/trunk/版本的源码;【*】在makemenuconfig时,仅增加勾选了SDK和toolchain两项;之后makeV=99;并编译成功;【*】在源码路径下的sta... 展开  我来答 分享 你的回答被采纳后将获得: 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者...

Go交叉编译

1. 首先,确保Go环境变量已正确配置。可以利用`env`命令查看环境变量设置情况。如果未配置,可以通过将Go安装路径添加到系统或用户的环境变量中来完成。这一步对于后续的编译操作至关重要。2. 在命令行窗口中,使用PowerShell进行编译操作更为方便。打开PowerShell窗口,输入以下命令以完成编译过程:`go bui...

为openwrt添加的自己的软件包时到package目录下时,发现里面已有的程序...

交叉编译的gcc是不一样,虽然都是gcc,但是编译出来的东西是不一样的。

如何为现有的openwrt编译一个opkg上没有的软件

svn checkout svn://svn.openwrt.org/openwrt/backfire cd backfire ./scripts/feeds update -a ./scripts/feeds install -a 4.配置编译选项 make menuconfig 在target system里选择Broadcom BCM63xx,根据需要选择其他的软件,:表示该模块直接编译到核心中 M:该模块以被核心支持,可以后再安装 空白...

golang交叉编译和条件编译的实际应用

实际应用中,Go语言的交叉编译和条件编译技术显得尤为重要。交叉编译是指在开发环境中使用特定的编译器工具链,生成能在其他平台(如Windows开发Linux运行)上运行的可执行文件。比如,GOOS和GOARCH环境变量可以帮助设置目标平台和架构,如config_linux_amd64.go会针对Linux 64位架构进行编译。条件编译则允许...

初探AC2100 刷 openwrt

系统版本:刷完之后想知道一下系统版本,通过下面的命令看到OPENWRT_ARCH="mipsel_24kc",查询之后这是一个32位mipsel架构的系统。我们可以在go里面写了一个Hello World交叉编译之后直接扔到路由器就能跑,非常容易,go语言太强大了。写完代码后,使用交叉编译的命令使用的是$GOOS=linux GOARCH=mipsle ...

...可以像锐捷一样交叉编译进openwrt吗(源码用zlevenoc

有源码就可以,交叉编译和一般的编译,没有什么本质的不同。

linux下怎么安装Go开发环境

编译并运行一个简单的程序,首先选择一个包的路径(我们将使用github.com/user/hello)和创建在您的工作区相应的软件包目录:mkdir $GOPATH/src/github.com/user/hello创建名叫hello.go的文件,上面创建过,此处略过。cd $GOPATH/src/github.com/user/hellogo install$GOPATH/bin/hello或者:hello如果你使用的是一个...

openwrt语言 openwrt用什么语言开发 openwrt改语言 openwrt安装中文语言包 lede 和openwrt的区别 openwrt stdout openwrt教程 openwrt中文设置教程 lede openwrt
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
学生证五一假期购买火车票享受半价吗 大一军训需要提前准备什么东西 宝宝坐飞机耳朵疼是为什么 ?宝宝坐飞机哭闹怎么办 横翠朝晖保定八景 浦发信用卡逾期三个月1万3银行打电话催收下律师函,两个月没上班实在还... 宝宝坐飞机会耳朵不舒服吗 有哪些清蒸鲈鱼的烹饪技巧分享? 乱舞春秋游戏中的机关兽[中]刀兽的属性怎么样,发过来看看 三招“对付”住耍赖宝宝 乱舞春秋文门客用什么机关好 那个alfa defender-Secure storage未经允许扣了208元还能追回来吗!! 为什么天翼网关连上数据后还是显示不在线?而且无法打开wifi?十万火急... 求问电脑做课程表,怎么把字写在中间??回车键没用。8.9行 ...打开图片文件时出现五个错误,是否要取消这次打开操作! ...警告:打开过程中出现一个错误,建议您取消这次打开操作并对图形运行RE... 某校对九年级400名学生进行了一场体育测试 为了增强学生的身体素质,某校坚持常年的全员体育锻炼,并定期进行体能测 ... ...员体育锻炼,并定期进行体能测试,下图是将某班学生的立定跳远... 新日晶胶电池一年内可以无条件更换新电池吗? 新日电动车晶胶电池48V12AH市场价格是多少钱一组? 新日电动车远舰五代 我有一辆新日电动车晶胶电池的两年多了跑三四十里路就不行了想换电池... 又细又硬的竹子是什么竹 投影机安装步骤和技巧 投影机怎么安装,听听老师傅的经验就知道 投影机如何安装 “故园渺何处”的出处是哪里 茂名市哪里有修汽车自动波箱的? 茂名市极致音响设备有限公司怎么样? 我的GOOGLE企业邮局现在收不到信件了 想要装个伟博思通车载预热系统,有什么需要注意的么 伟博思通车载预热系统好装么?会不会损坏车体之类的啊? 冬天在楼上就能提前预热车 嗓子干痒,还想咳嗽,是呼吸道感染还是感冒的前兆呢 喉咙有时候痒痒的,想咳嗽是慢性咽炎吗?从小就有这种情况了,现在已... 嗓子干痒老想咳嗽怎么回事 老感觉喉咙痒想咳嗽是怎么回事 喉咙痒,扁桃体发炎,咳嗽是咽炎还是气管炎 干咳、嗓子难受、感觉有异物、恶心是咽炎还是扁桃体炎啊? 交警诬陷没系安全带,开了罚单但我没有签字,也没有拿,罚单会生效吗? 如果车不是自己开的不系安全带呗扣分怎么办 18cm男生会介意能不能到底吗 我车子是南京牌照、今天在义乌因没系安全带被交警拦下 !驾照给他后因... 兴平霍去病墓石雕介绍 男生为什么喜欢说自己的18cm? LG1942S显示器,一旦它发热就花屏了。用手抓一下上边框又恢复正常,过 ... 计算机科学中有哪些典型的练手项目? 程序员的工作真的像外界说的那么好吗。 右肺下叶小结节影是怎么回事 电影预告怎么造句