ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【路由器】OpenWrt 手动编译 ipk

2022-04-28 10:00:45  阅读:329  来源: 互联网

标签:git ipk 编译 OpenWrt org openwrt 路由器


目录

.ipk 文件

.ipk 文件是可以通过 OpenWrt 的包管理软件 opkg 直接安装,好比 .deb 文件与 apt 的关系。虽然官方的软件仓库已经很丰富了,但是有时仍然需要从源码编译一些第三方的软件使用,例如锐捷认证等

但是由于路由器平台通常与常用的服务器或者个人 PC 的处理器架构不同,并且路由器的处理器本身性能较弱,几乎不可能直接在路由器上进行编译生成 .ipk 文件,因此需要交叉编译来实现

而官方的 OpenWrt 仓库就提供了一个方便使用的交叉编译环境

编译准备

以 Debian / Ubuntu 为例,参考官网给出的要求,可以通过下面命令来进行安装依赖包

sudo apt update
sudo apt install build-essential ccache ecj fastjar file g++ gawk \
gettext git java-propose-classpath libelf-dev libncurses5-dev \
libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
python3-distutils python3-setuptools python3-dev rsync subversion \
swig time xsltproc zlib1g-dev

安装/更新好这些依赖之后,就可以通过 git 拉取 OpenWrt 仓库了

git clone https://git.openwrt.org/openwrt/openwrt.git

通常由于仓库较大以及网速问题,可能会需要很久,其实可以通过 --depth 来限制拉取的仓库深度,或者通过镜像站来加速拉取,当然也可以两者同时采用

git clone https://git.openwrt.org/openwrt/openwrt.git --depth=1
# cnpmjs.org 已经不能使用,请自行寻找其他镜像站
# git clone https://git.openwrt.org.cnpmjs.org/openwrt/openwrt.git
# git clone https://git.openwrt.org.cnpmjs.org/openwrt/openwrt.git --depth=1

编译 .ipk 文件

更新 feeds

进入 openwrt 仓库后,首先需要更新软件包列表 feeds,它是在 OpenWrt 中共用位置的包的集合。运行以下命令即可更新内置软件包列表并链接到编译工具中:

cd openwrt/
./scripts/feeds update
./scripts/feeds install

配置平台

make menuconfig

通常使用图形化菜单界面来进行配置编译选项,依次配置处理器架构、具体的处理器型号以及设备

以小米 mini 路由器为例,应该将他们配置成如下图所示

Target-Config

获取交叉编译链

这一步就是获取对应设备交叉编译所需的编译链

make tools/install V=s -j$(grep processor /proc/cpuinfo | wc -l)
make toolchain/install V=s -j$(grep processor /proc/cpuinfo | wc -l)
  • V=s 可以显示 make 过程中的所有输出,方便定位当前是否卡在了某一步骤上
  • -j$(grep processor /proc/cpuinfo | wc -l) 则是根据机器的 CPU 数量来进行多线程编译

添加需要编译的第三方软件包

可以先搜索有没有已经配置好的含有 Makefile 的仓库,有了适配过的 Makefile 文件就可以很方便的来编译源码生成 .ipk 文件了

minieap 为例,github 上有已经完成的仓库,依次可以直接拉取来编译

git clone https://github.com/BoringCat/minieap-openwrt.git package/minieap

在拉取完成仓库后,就可以再次配置编译选项,将需要编译成 .ipk 的功能配置成模块编译,也就是标记成 M

make menuconfig

对于 minieap 来说,在 Network 找到对应选项并配置成 M 即可,如下图

MiniEAP-Config

配置完成后就可以进行编译了,编译命令也很简单,以 minieap 为例如下所示

make package/minieap/compile V=s -j$(grep processor /proc/cpuinfo | wc -l)

编译完成后,.ipk 文件会生成在 ./bin/packages/<YourArchitecture>/base 目录下,将其拷贝到路由器上就可以通过 opkg 进行安装使用了

参考资料

本文作者: ywang_wnlo
本文链接: https://ywang-wnlo.github.io/posts/96a1807.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

标签:git,ipk,编译,OpenWrt,org,openwrt,路由器
来源: https://www.cnblogs.com/ywang-wnlo/p/OpenWrt-ipk.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有