Openwrt使用diff命令打patch方法

一、单个文件打patch的情况

  • 1.使用diff命令,生成补丁文件
    在build_dir/target…/目录下,复制创建一个新的源码目录(如:mosquitto-2.0.13_after),并将文件mosquitto-2.0.13_after/lib/mosquitto_internal.h进行想要的修改;
    然后使用diff命令和未修改的目录下的文件(mosquitto-2.0.13_before/lib/mosquitto_internal.h)进行比较,生成补丁文件(001-mosquitto_internal.patch)。
    diff -urN mosquitto-2.0.13_before/lib/mosquitto_internal.h mosquitto-2.0.13_after/lib/mosquitto_internal.h > 0010-mosquitto_internal.patch
    注意:
    (1)参数使用-urN;
    (2)未修改的文件在前,修改过的文件在后;(diff命令也可以比较目录)
    (3)生成.patch文件

  • 2.新建patches文件夹,放入补丁文件
    在mosquitto源码编译目录下,创建patches目录,将生成的.patch文件放入,可放入多个补丁文件,按照前缀数字顺序执行

补丁命名规范
所有的补丁文件应该以“NNN-lowercase_shortname.patch”的形式命名,并分成以下几类:

0xx - 上游补丁
1xx - 代码等待上游合并
2xx - 内核构建、配置、头补丁
3xx - 特定架构的补丁
4xx - mtd相关的补丁(子系统和驱动)
5xx - 文件系统相关的补丁
6xx - 通用网络补丁
7xx - 网络层/物理层驱动补丁
8xx - 其他驱动
9xx - 未分类的其他补丁

编译时,解压mosquitto压缩包之后会自动 先将patch内容写入源码文件,然后再编译生成相关文件。

  • 3.删除build_dir下的源码目录,整体编译验证
    将build_dir/target…/下的mosquitto目录删除,整体编译,编译通过后查看新生成的
    mosquitto-2.0.13/lib/mosquitto_internal.h是否是修改过的。

二、打patch需要修改同一目录下多个文件的情况

  • 1.去dl目录下找到需要的压缩包,使用linux命令解压一份,copy到build_dir/target…/目录下。
    从dl目录的压缩包解压是为了防止编译过程中产生的新文件(如.so文件等)对patch产生影响,所以需要从dl下的压缩包解压出最原始的代码。注意:解压/压缩都使用linux tar命令方式

  • 2.修改后使用diff命令对目录进行比较
    diff -urN libmodbus-3.1.7/src/ libmodbus-3.1.7_after/src/ > 0010-modbus.patch
    修改了多个文件可以直接对修改的文件所在的父目录打patch,父目录下所有的不同点都会在同一个patch中体现

三、使用quilt工具打patch的方式可参考如下链接:

https://www.cnblogs.com/adam-ma/p/17712940.html

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryan爱吃糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值