找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1173|回复: 5

使用对应的openwrt sdk快速编译ipk文件

[复制链接]
发表于 2023-3-12 00:55 | 显示全部楼层 |阅读模式
本帖最后由 pk135k 于 2023-3-12 00:57 编辑

使用对应的openwrt sdk编译所需要的插件或者驱动之类。
网上现有的教程基本上都在教如何重头编译一个固件,但其实,很多时候需要的仅仅只是固件中的一些插件而已,完全重头编译是一件非常费时又费力的事,使用Openwrt SDK编译会非常快,而且,有时候需要编译一些指定内核的插件也比较方便。下面以编译瑞昱的2.5G网卡TL8125BG为例子。
首先,需要下载对应的Openwrt SDK,这里我使用是22.03.2的x86_64版。下载页面为https://downloads.openwrt.org/releases/22.03.2/targets/x86/64/
请根据自己的需求选择对应版本的即可。请注意红圈中的版本选择。上面两个红圈是版本号和硬件版本。下面的红圈是需要下载的SDK文件。
准备好相应的编译环境,这里用的Ubuntu 22.04。server版和desktop版都没所谓。全程使用终端操作。关于使用别的发型版或者WSL请自行解决中间遇到的问题。个人建议使用虚拟机安装Ubuntu server 22.04。全程跟着教程来避免各种奇奇怪怪的问题比较好。
使用下面的命令更新系统并安装所需要的软件。这是针对22.04的。如果需要使用其他的发行版进行编译的话请参考Openwrt官方教程
sudo apt update

sudo apt upgrade
sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget
环境准备完成之后将下载的SDK文件使用tar命令解压。
tar -xf openwrt-sdk-22.03.2-x86-64_gcc-11.2.0_musl.Linux-x86_64.tar.xz -C ~/openwrt-sdk
然后修改对应的配置文件。
cd ~/openwrt-sdk

vi feeds.conf.default
在每行前面加上#注释。单独编译插件并不需要这些,如果不注释的话将会导致非常多的插件被编译,中间的下载过程很慢甚至中断。因为很多源码托管在墙外。非常耗时且没有必要。除非你明确知道依赖了那些东西。至于如何使用vi请自行思考,或者使用你自己熟悉的编辑器。
下一步就需要将你所需要的源码放到对应的目录下面。通常放在当前目录下的packages目录中的对应目录下。如果你不确定,请直接放在packages下。就像下面的例子一样。
如果你使用的是在线仓库,请参考lean大神的教程。思路就是将插件源码仓库和所依赖的仓库添加到feeds.conf.default中。后续的步骤基本一样。通常来说,如果你只是编译几个东西的话,没有太多依赖的情况下是很快就能编译完成的。
./scripts/feeds update -a

./scripts/feeds install -a
make menuconfig
使用make menuconfig命令打开配置页面后可以按/开启搜索模式。输入关键字后就可以看到类似下面的界面。红圈中就是跳转的条目编码。在这个界面上按对应的数字就能跳转的相应的配置位置。
跳转之后按M选中即可。都选完之后连点多次esc键进入保存界面。
剩下的就是编译了。通常来说,只需要下面的命令即可编译完成了。
make download -j8

make V=s -j1
最终的ipk文件请在bin目录中找一下即可。
如果需要更高阶的自定义操作的话,请参考该页面




发表于 2023-3-12 08:52 | 显示全部楼层
思考了,感谢分享,留个记录
回复 支持 反对

使用道具 举报

发表于 2023-3-12 10:57 | 显示全部楼层
好教程,我这看不到图可惜了。
回复 支持 反对

使用道具 举报

发表于 2023-4-23 09:16 | 显示全部楼层
在每行前面加上#注释后./scripts/feeds update -a还能用?

点评

为什么不能用呢?这条命令的作用就是根据.config文件去更新插件下载依赖,最多也就是没有需要更新的而已。当然,你非要说这个没啥用,只要全部注释了,那确实没什么用。但是,有时候你需要去下载某些源码的时候,这  详情 回复 发表于 2023-4-24 22:39
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-24 22:39 | 显示全部楼层
725216 发表于 2023-4-23 09:16
在每行前面加上#注释后./scripts/feeds update -a还能用?

为什么不能用呢?这条命令的作用就是根据.config文件去更新插件下载依赖,最多也就是没有需要更新的而已。当然,你非要说这个没啥用,只要全部注释了,那确实没什么用。但是,有时候你需要去下载某些源码的时候,这个就是有用的了。我这要求运行一下无非是为了防止误导某些有需求的却没有执行这个。
回复 支持 反对

使用道具 举报

发表于 2023-9-11 09:13 | 显示全部楼层
单独编译的话,别直接用make,而是 make package/包名(文件夹)/compile,岂不是更快!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-4 00:07

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表