openwrt 使用quilt 打补丁(patch)
1,引入
本文简单解释如何在OpenWRT下通过quilt命令打补丁--patch,也可查看openwrt官网提供的文档
2,以下代码通过编译net-snmp介绍
① 执行编译命令之后,进入build_dir的net-snmp-5.9.1目录下,改目录即为snmp最终编译的目录了
//该命令直接编译snmp
make package/network/services/net-snmp/compile V=s//在工程根目录先回生成 build_dir (openwrt应用都在这个目录下编译)
cd ./build_dir/target-mipsel_24kc_musl/net-snmp-5.9.1
② 如何编译snmp时,已经在package对应的目录下存在patch,我们可以再改目录下执行:
cd ./build_dir/target-mipsel_24kc_musl/net-snmp-5.9.1quilt push -a :加载所有的补丁文件
③ 如果我们要为已有的某个文件或多个文件创建一个patch,应该这样做:
quilt new 100-add_module_files.patch :新创建一个patch文件quilt edit agent/snmpd.c :执行该命令将通过vim打开该文件,进行修改
quilt edit agent/snmpd.h :执行该命令将再次vim打开该文件,进行修改如果我们需要增加一个新的文件,使用:touch test.c
向patch中增加文件: quilt add test.c同时修改该文件时,任然使用 quilt edit test.c 修改//完成以上步骤:执行以下命令生成patch
quilt refresh
④ 执行完成后,可以在当前目录下的patches中查看:
⑤,将生成的patch文件复制到package对应目录,再去编译,才能应用当前patch生效
cp patches/111-test.patch /主目录/package/network/services/net-snmp/patches
以下是我生成的patch文件: (不用于diff)
3,总结
上面介绍了如何增加一个patch文件,还有其他的用法目前还没接触,值得注意一点的是,在build_dir/中修改了原码文件,在编译时不生效的,需要为修改的部分重新生成patch,才可以。