IT技术之家 网络技术 OpenWrt SDK 编译软件包(基础篇)

OpenWrt SDK 编译软件包(基础篇)

OpenWrt 是个非常好用且强大的 Linux 发行版,常用于路由器等嵌入式设备。之前我也写了不少关于 OpenWrt 的教程。

OpenWrt 和其他 Linux 发行版一样,都可以通过软件包源码编译适合自己设备运行的软件包,不过由于 OpenWrt 大部分运行于路由器,存储空间不充裕,并没有像其他 Linux 发行版那样附带 GCC 可以及时编译,不过 OpenWrt 提供了 SDK,可以使用其他 Linux 发行版来为 OpenWrt 编译软件包。

这篇教程就教大家如何使用 OpenWrt SDK 来为自己路由器的 OpenWrt 编译软件包,这样大家就可以自己编译一些开源项目或者是《OpenWrt 安装及配置 Aria2 教程》里面提到的完整版 Aria2 这种的。当然,同样适用于 LEDE 和 PandoraBox。

准备工作

首先需要一个 Linux 系统,不要使用 Windows10 的 Linux 子系统,要使用完整的 Linux 系统。

推荐使用 Deepin (深度 Linux),由国人团队开发,附带安装器,只需轻点几下鼠标,就可以完成双系统的安装。系统附带了 Chrome、QQ、网易云音乐等常用软件,不用担心不会使用 Linux 的尴尬。

系统安装后,打开终端 Ctrl + Alt + T ,依次输入:sudo apt-get update # 更新软件源sudo apt-get upgrade -y # 更新软件包sudo apt-get install subversion g++ zlib1g-dev build-essential git python rsync man-db libncurses5-dev gawk gettext unzip file libssl-dev wget -y # 安装所需软件包,然后重启系统。

如果你使用 PandoraBox SDK 进行编译,推荐使用 Ubuntu 14.04 系统,或者使用我写的脚本来安装所需依赖库。wget https://cdn.mivm.cn/www.mivm.cn/archives/openwrt-sdk-package-foundation/PandoraBoxSDK_lib.tar.gz && tar zxf PandoraBoxSDK_lib.tar.gz && cd PandoraBoxSDK_lib && sudo ./install.sh

然后下载适合你路由器的 OpenWrt SDK,根据 CPU 架构和系统版本,比如 K3,CPU 架构是 bcm53xx,系统是 LEDE Snapshots,下载 bcm53xx 的 LEDE Snapshots SDK。

将下载好的 SDK 解压,就可以开始编译软件包了。

编译软件包

打开 SDK 文件夹 → 右键空白处 → [在终端打开] → 依次输入 ./scripts/feeds update -a # 更新软件列表./scripts/feeds install -a # 安装软件列表make defconfig # 生成配置文件

PandoraBox SDK 默认没有软件列表配置文件,下载 https://www.ittel.cn/wp-content/uploads/2018/08/feeds.conf_.zip 复制至 PandoraBox SDK 目录,执行更新和安装命令和 ./scripts/feeds uninstall base-files busybox freeswitch # 卸载不兼容的软件包

输入 make menuconfig 进入配置界面

界面操作

↑ ↓:目录选择

← →:功能选择

回车键:执行功能

Y: 选中

N:取消选中

Esc:返回

斜杠键:搜索

功能选项

Select (选择):这个选项下按回车才可以进入目录。

Exit (退出):和 ESC 键作用相同,返回上一级或退出。

Help (帮助):显示帮助信息。

Save (保存):保存当前配置信息变更,每次退出前记得保存一下。

Load (加载):加载其他配置文件,一般用不到。

目录后面有箭头都可以进入,前面有方括号的都可以选中。

接下来编译个自带软件列表的软件包,以完整版 Aria2 为例。

打开配置界面

依次进入 [Network] → [File Transfer]

Y 选中 Aira2

进入 [Aria2 Configuration]

有几个没有被启用的选项(功能),依次按 Y 选中启用

保存 → 退出

输入 make package/aria2/compile V=s 开始编译,耐心等待编译完成。如需编译其他软件包,把 aria2 改为对应的软件包名即可,前提是软件列表有对应软件包。

注:V=s的作用是输出详细信息

推荐使用代理加速软件包源码下载

如果你的 CPU 有多个线程,可以加上 -j线程数 来使用多线程编译,例如:make package/aria2/compile V=s -j4 # 启用4个线程

编译好的 ipk 文件可以在 bin/packages/arm_cortex-a9/packages 找到。当然,不同的软件包和 CPU 架构路径不一样,不过都在 bin/packages

有时候我们需要编译第三方软件包怎么办?接下来以 vlmcsd (KMS服务器) 为例,教大家编译第三方软件包。

输入 cd package # 进入 package 目录

git clone https://github.com/openwrt-develop/openwrt-vlmcsd.git # 获取 vlmcsd 源码git clone https://github.com/openwrt-develop/luci-app-vlmcsd.git # 获取 vlmcsd Luci 界面源码

cd .. # 返回上级(SDK)目录

make menuconfig

不知道软件包在那个分类怎么办?可以使用搜索功能,按斜杠键后输入关键字,然后找到我们需要的软件包,Location 就是软件包所在位置。

vlmcsd 在 Network → 找到软件包并选中

保存 → 退出

输入 make package/openwrt-vlmcsd/compile V=s # 编译 vlmcsdmake package/luci-app-vlmcsd/compile V=s # 编译 Luci 界面。有小伙伴可能要问了,软件包名不是 vlmcsd 吗,为什么命令是 openwrt-vlmcsd ?

那个是源码文件夹名称,源码文件夹名称是 openwrt-vlmcsd,也可以把文件夹名称改下。

第三方软件包编译的 ipk 一般是在 bin/packages/arm_cortex-a9/base

适用于 OpenWrt SDK 编译第三方软件包可以在 GitHub 找到,你可以在搜索软件名称后面加上 openwrt,比如:”vlmcsd openwrt”。

常见问题

问:为什么我make menuconfig之后没有软件包?

答:需要更新 feed 列表源,./scripts/feeds update -a # 更新软件源./scripts/feeds install -a # 安装软件源

问:为什么我编译会报错?

答:详细查看输出信息,找出错误信息部分,并尝试解决,你也可以将错误信息截图至QQ群并@小山。

问:软件源没我需要的软件包怎么办?

答:可以参考上面编译 KMS 服务器的方法,去 GitHub 寻找对应的软件包,也可以点击网站底部的 GitHub 图标到小山的仓库里寻找。注意!我重点说一下,并不是随便一个程序的源码复制/克隆到 SDK 目录就可以进行编译的。首先,确保你准备编译的源码支持configuremake,然后,这份源码不是直接放在 SDK 目录的,而是要再写一个 Makefile 用于 SDK,告诉 SDK,你这个源码的下载地址、软件包名称、版本号、依赖项等等,然后软件包才可以显示在软件包列表里,才可以用上面的方法编译。关于怎么写这个 Makefile,可以参考http://wiki.openwrt.org/doc/devel/packages,相信稍微有点编程基础的人都看得懂。当然,也有不用写 Makefile 的方法,直接用工具链编译,不过这个也有点麻烦,暂且不讨论。

问:PandoraBox SDK 编译某些软件包报错怎么办?

答:PandoraBox SDK 编译某些软件包确实会报错,至于报错的原因,我还没搞懂,有搞懂的小伙伴欢迎留言给我。

如果你还有什么不懂的地方,欢迎在下方留言。


OK,以上就是使用 OpenWrt SDK 编译软件包教程基础篇,如果有哪里不懂或者哪里不对,可以留言给我或者加QQ群。

欢迎加入刷机交流群(796285622):https://jq.qq.com/?_wv=1027&k=52Cv7CE

1、如果您发现本站资源已经失效不能下载请评论留言反馈,谢谢支持
2、友情提醒:部分内容来自网络,如有侵犯您的权益,请速与我联系! 如有转载请注明出处:https://www.ittel.cn/archives/1427.html
guest
0 评论
内联反馈
查看所有评论
联系我们

联系我们

QQ:877196754

在线咨询: QQ交谈

邮箱: 877196754@qq.com

工作时间:周一至周日,8:00-21:00
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部