本文以编译 vlmcsd 为例说明如何使用 OpenWRT 编译第三方软件包。
准备
安装 OpenWRT SDK 所需要的软件包,可以在 这里 找到主流 Linux 发行版的安装命令。
我使用的是 Ubuntu 17.10,安装命令如下:
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev |
下载对应固件的 OpenWRT SDK,可以在 https://downloads.openwrt.org/ 找到。
下载完成后解压,解压命令 tar xf openwrt-sdk-filename.tar.xz
解压后 cd 到解压出来的文件夹中
编译
将要编译的软件包代码 clone 到 package 目录
git clone https://github.com/ysc3839/openwrt-vlmcsd.git package/vlmcsd
执行 make menuconfig
并选中你要编译的软件。我这里编译时是自动选中的,所以直接保存即可。
执行 make package/vlmcsd/compile V=s
开始编译。
V=s
参数代表输出所有编译信息,可以不加。但如果编译出错,要加上此参数才能看到错误信息。
加上 -jN
指令可以让 N 个编译任务同时运行。这里的 N 建议设为 CPU 核心数+1,比如我的 CPU 是 8 核心,参数就是 -j9
。
对于本文的例子,因为只编译一个软件包,加上此参数并不能带来明显的速度提升,所以我说不加的。
编译后生成的 ipkg 可以在 bin 目录中找到。
附加说明
文中的 openwrt-vlmcsd 项目 fork 自 cokebar/openwrt-vlmcsd。我修正了 bug 并做了部分改进。
cokebar 还为 vlmcsd 编写了 luci 界面 luci-app-vlmcsd,可以参考本文的方法来编译。
KMS 有自动发现内网中激活服务器的功能。如果你安装了 luci-app-vlmcsd,选择 Auto activate
或 自动激活
选项并应用即可。
如果你没安装 luci-app-vlmcsd,可以手动编辑 /etc/dnsmasq.conf
,在文件最后面加入:
srv-host=_vlmcs._tcp.lan,hostname.lan,1688,0,100
保存后重启 dnsmasq: /etc/init.d/dnsmasq restart
在 Windows 中执行 nslookup -type=srv _vlmcs._tcp.lan
可以检测是否设置成功。