OpenWrt编译错误的一些解决思路

我们在编译openwrt固件时最害怕的就是看到下面这个,每当我看到这个心都痛一下,错误不可怕,可怕是的不知道错在哪!我来写写自己的经验,给大家一个思路。我也是一个小白,也不懂代码,也只是会用大神的一键编译项目来进行编译。大家就当看着玩吧!

只要能运行,bug不要动!

以前我也是失败后也是一阵懵,不知道哪里错了,不知道哪里错就谈不起从何改起这才是可怕的。看着一连串的英文日志就头疼。我以前的做法是只要错了,就把额外的软件包删除,使用排除法:先只使用lean的源码编译,首先确定大神源码有没有问题,如果源码没有问题那就是额外软件有问题。再重新在本地编译环境检查一下配置文件,(其实也没有多大用,只是希望能自己看出来错误。)然后再重新编译一次。如果再错那就没有办法,要么扔掉额外软件包,要么再换额外软件包。以前我就是有时候遇到错误,反正也看不懂错误原因,又认为自己在配置编译时没乱搞,就会重新编译一次,有时候居然成功了!也就是说Github的Actios也不一定百分百稳定!

总结一下,我就是非明显(其实就是自己看不懂)的错误,自己没乱下载软件包的情况,就自己再重新编译一次,或许能成功!

不该省的不能省!(除了在线SSH配置)

这个也是吃了不少亏,在学会大神的一键编译脚本后,知道了只要配置好“.config”文件就可以省去搭建本地编译环境的麻烦。比如说半年前我在本地环境下生成了一个配置文件,并编译好了固件。但半年后,这个固件又满足不了我了,我就会再次添加软件包,然后只需配置.config文件,这样很潇洒!但其实不然,前两天我才意识到这个错误。因为编译脚本的yml流程文件是实时拉取的lean的源码,而我们本地的源码配置已经和实时在线的最新源码的有差异了,有差异就有极高的大概率导致错误,不能说百分百吧也得是99.99999999…………%会错。所以说我们在二次编译时,只要是稍微间隔的时间有点长时就要在本地重新拉一下最新源码,生成配置文件,以匹配yml拉取的最新源码

总结一下,本地编译环境是有必要存在的,这个不能省!而且看反馈很多人的SSH在线被封了,一键脚本作者说可能是滥用导致的,博主我的也被封了,但我没滥用呀,也就几个月编译一次。

一些实例

● 手动编写配置时没写好

比如在一次编译过程中出现这两个地方报错“Organize files”和”Compile the firmware”。
Organize files看不懂。

然后在这个Download package下看到“.config:4914”。

我就去试着打开配置文件在4919行找,果然看到了错误。要编译的插件没有写“=y”,才导致错误,加上“=y”再次编译成功了。

● 插件BUG或者与其他软件包冲突

有了上面的经验我就直接找我能看得懂的信息,比如这个我就看到了“luci-app-cshark”,这个应该就是说这个插件有问题,直接在配置文件里搜索这个这个软件名,直接注释掉!完活!

还有这个“luci-i18n-nlbwmon-zh-cn”,直接拿下!

● 空间不够

我在第一次编译小猫咪时,出现了空间不够,但当时我就想到了可能出现问题的地方:小猫咪!因为我在本地配置编译环境时,直接克隆小猫咪的官方仓库到本地,下载到10%就1G了,我一看下完差不多得20G,当时一看这架势我就直接取消本地搭建配置,直接把猫咪的仓库地址加到编译仓库里的sh脚本里,让他在线下载,然后在配置里手动添加小猫咪插件。出现空间不够的问题我又在网上搜索,好像说是github给的空间是14GB,这显然不够,在恩山问了一下,说是小猫咪作者总喜欢把二进制上传到git上,拉全量就会把历史提交都拉下来,所以克隆仓库很大。所以我就直接找了个只有luci-app-小猫咪的仓库替换解决了这个问题!

● 还有就是应该是插件与源码不匹配的

这是我添加某仓库的插件,第一次出现的错误,看问题出现在“libiptext”和“libiptext”,这两个东西谷歌翻译了一下,意思这是firewall缺少这两个依赖,去官方仓库反馈说少依赖,给我回复是说是适配23.05源码的,但我又不会更改源码啥的,怎么办?简单粗暴的老方法:提出的问题解决不了,那就把提出问题的软件给解决掉!直接rm-rf package/../firewall。

然后又出现了错误。

后来我又在作者的issues里看到有人说同样的错误,也就是说并非光我自己是这样的问题,这个我就释然了!

● 九九归一

比如有一次我在编译时,为了精减系统,也不懂一些底层配置,忘了动了哪,产生了很多错误。

可以看到有在配置“luci-i18n-nlbwmon-zh-cn”时引发的一连串反应,有firewall、dnsmasq-full、dnsmasq-dhcpv6等错误,我就尝试把印象动过的配置还原一下,但最终还是错误,不能一次次试,没办法只能推倒重来直接一波“rm -rf ./tmp && rm -rf .config”,重新配置,然后编译成功。

总结一下,我们在配置时必需配置lean大神已经给配置好了,不懂就不要动,我们只要更改要编译的平台、目标镜像、第三方插件、皮肤。这些就行,别的不懂不要动。​

最后祝大家:

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论!x