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.1

quilt 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)

openwrt 使用quilt 打补丁(patch)_第1张图片

 补充:

        ① 通过quilt new xxx,新建立了一个patch文件后,在改目录下,使用quilt add test.c,之后可直接使用vim修改或其他文件编辑器修改,该修改仍会被记录(quilt refresh)到新的patch。

        ② 如何应用其中某一个一个patch:

                patch  < patch/101-print3c.patch

 3,总结

        上面介绍了如何增加一个patch文件,还有其他的用法目前还没接触,值得注意一点的是,在build_dir/中修改了原码文件,在编译时不生效的,需要为修改的部分重新生成patch,才可以。

你可能感兴趣的:(linux,openwrt)