本文最后更新于 579 天前,其中的信息可能已经有所发展或是发生改变。
这里插件的编译还是以 Clash 为例,官方版本为 v1.7.5.7,但实际上已经能编译出更新的版本,当前这里的编译请主要参考流程,插件除非是因为 OpenWrt 系统更新已经到了不能用的程度,否则是没有必要手动去编译的。
一般情况下编译都是简单顺利的,但是你仍然要抱有出错并靠自己解决的觉悟,新特性和系统稳定总是很难兼得。
官方文档:compile
他这里用到了 OpenWrt 的 SDK 进行编译,实际上我们并不需要这么做,因为我们有 OpenWrt 的源码,因此只需要使用 OpenWrt 的源码进行编译就行了,注意这里的编译并不是指将插件直接编译到完整的 OpenWrt 系统内,而是使用 OpenWrt 的源码单独编译一个 .ipk 的插件安装文件出来。
1、下载插件源码
以 luci-app-clash 为例,克隆代码:
# 进入 lede 文件夹
cd lede
# 克隆到 package 目录下
git clone https://github.com/frainzy1477/luci-app-clash.git package/luci-app-clash
2、设置编译模式
执行:
make menuconfig
我的插件是 luci-app-clash,属于 LuCI 目录,视情况选择:

第二个选项就是(这里要参照你自己插件的目录层级关系,可能要再进一层到 Applications 中去):

这里只编译这个插件,选 M 编译模式(Y 模式为编译进系统,N 为去除这个插件):

之后保存退出。
3、跟随插件官方文档配置编译环境
每个插件所需的环境都不一样,比如说这次编译的 Clash,官方文档提到了要安装 po2lmo 以支持中文语言,照做即可:

注:我已经事先编译过一次了,所以输出可能和你第一次执行有些不一样。

4、开始编译插件
执行:
make package/luci-app-clash/compile V=99
多线程而且只编译一个插件是很快的,检查下输出看下插件安装文件所在位置:

倒数第四行,写着文件被打包在了哪里:
...
...
Packaged contents of /home/rabbir/lede/build_dir/target-x86_64_musl/luci-app-clash-v1.8.0/ipkg-all/luci-app-clash into /home/rabbir/lede/bin/packages/x86_64/base/luci-app-clash_v1.8.0_all.ipk
...
...
直接前去获取即可:

安装过程不演示了,实际上我也并未安装,因为旧版本是可用的没有必要,并且我无法确定 1.0 版本的 Clash 内核能否和当前 v1.8.0 的 Clash 插件适配。
结束。