1. 给源码树加 patch

进入源码树的根目录下:

cd SRC_DIR
patch -p 1 < /path/to/your/patch

-p 1 指定忽略的目录个数,如你的patch头为 diff -urN orig/include/linux/module.h tgt/include/linux/module.h,则是对 $SRC_DIR/ 下的 include/linux/modue.h 应用该patch

-p 2 则是对$SRC_DIR/ 下的 linux/modue.h 应用该 patch

2. 移去加入的 patch

cd SRC_DIR
patch -R -p1 </path/to/your/patch

3. 模拟打补丁

有时我们需要测试一下,自己生成patch 能否正确的应用到目标源码树下而没有冲突,则:

patch --dry-run -p1 < /path/to/your/patch

4. 常见错误

patch: **** malformed patch at line 129

出现这中错误,一般是 patch 生成后被手工修改了,如下的patch:

diff -urN a/include/asm-mips/module.h b/include/asm-mips/module.h
--- a/include/asm-mips/module.h 1970-01-01 00:00:00.000000000 +0000
+++ b/include/asm-mips/module.h 2008-01-03 16:51:23.000000000 +0000
@@ -104,6 +104,8 @@
#define MODULE_PROC_FAMILY "NEVADA "
#elif defined CONFIG_CPU_R8000
#define MODULE_PROC_FAMILY "R8000 "
+#elif defined CONFIG_CPU_R9721
+#define MODULE_PROC_FAMILY "R9721"
#elif defined CONFIG_CPU_R10000
#define MODULE_PROC_FAMILY "R10000 "
#elif defined CONFIG_CPU_RM7000

数字6,表示记录了6行原始文件,数字8表示记录了8行目标文件

如果你这时手工加了一行:

@@ -104,6 +104,8 @@
#define MODULE_PROC_FAMILY "NEVADA "
#elif defined CONFIG_CPU_R8000
#define MODULE_PROC_FAMILY "R8000 "
+#elif defined CONFIG_CPU_R9721
+#define MODULE_PROC_FAMILY "R9721"
+#define MODULE_PROC_ABC "ABC"
#elif defined CONFIG_CPU_R10000
#define MODULE_PROC_FAMILY "R10000 "
#elif defined CONFIG_CPU_RM7000

这是你应用这个补丁,patch 就会提示失败,并输出:

patch: **** malformed patch at line xxx

应用时,patch 都会检查受影响的行是否与记录在两个 @@ 之间的数值一致,手工加一行后,记录的目标文件行数为9,因此patch会失败。

将@@ -104,6 +104,8 @@ 改为@@ -104,6 +104,9 @@ 即可成功打上patch

patch补丁文件制作 使用和常见问题相关推荐

  1. linux -- patch补丁文件以及相关内容

    本文的目的是向Linux新手介绍一种无价的资源,Larry Wall的patch程序.patch是用来查找文件之间差异的GNU diff命令的一个接口:diff有很多选项,但是该命令最常用的用途是用来 ...

  2. buildroot patch 补丁文件使用方法

    在使用 buildroot 编译内核源码时,时常会有修改驱动或第三方包的需求,直接在 output/build/ 下修改源码,make clean 修改内容就会丢失,使用打补丁方式,把补丁包放到pac ...

  3. u-boot的patch文件制作

    首先明白为什么要制作patch文件,因为u-boot的移植过程需要根据实际需要修改通用u-boot,如果每次手工修改的话,太麻烦,所以用了patch文件一步到位,这点类似于makefile的作用,哈哈 ...

  4. patch 补丁制作方法

    补丁制作方法:     diff -uNr A B > C.patch A是内核源码: linux-2.6.31 B是修改后的内核源码:linux-2.6.31_XXX C是生成的补丁文件:li ...

  5. Rimworld Mod制作教程3 使用Xpath制作patch(补丁)

    文章目录 废话 核心内容 1 使用Xpath制作patch(补丁) 1.1 基本格式 1.2 手术类型 1.3 ~~偷窥~~ 参考他人代码 废话 rimworld在A17版本后提供了一个新的编写mod ...

  6. 打补丁文件时候patch -p1命令的含义

    其实patch在具体使用的时候是不用指定原文件的,因为补丁文件中都已经记载了原文件的路径和名称.patch足够聪明可以认出来.但是有时候会 有点小问题.比如一般对两个目录diff的时候可能已经包含了原 ...

  7. patch 修补文件(给文件打补丁)

    patch 修补文件(给文件打补丁) 功能:修补文件.使用补丁文件,对源文件进行更改.更改方式根据参数来设定. 倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行.如果配合修补文件的方式则能一次 ...

  8. patch diff 补丁文件

    diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上.在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算.在数学上我们 ...

  9. 补丁的制作和使用:diff和patch

    原理 现在有一个文件file1,通过修改file1得到了文件file2,然后用diff工具比较file1和file2的差异,得到一个补丁文件file.patch,它记录了两个文件的不同之处,patch ...

  10. 【patch】x64dbg_2018_10_11导出的内存补丁文件内容如何理解地址偏移(va内存,Rva相对,Fva文件)

    最近分析了一个程序,导出的一个文件 导出菜单 补丁文件gdul4.5.0.5.1337内容: >gdul_win64.exe 0000000000077D32:7E->EB 使用winhe ...

最新文章

  1. javascript的Array对象
  2. 【每日一算法】相同的树
  3. hive或mysql报错Too many connections
  4. MyBatis SQL注入隐患及防范
  5. 交通灯程序设计C语言,单片机C语言程序设计:LED 模拟交通灯
  6. 《计算机组成原理》唐朔飞第三版知识点总结
  7. 医学统计学计算机操作教程第3版附录答案,医学统计学课后习题集答案解析.doc...
  8. 2021年低压电工新版试题及低压电工考试总结
  9. 用telnet逛bbs
  10. java 各种编码间转换
  11. python数据库开发 dga_使用深度学习检测DGA(域名生成算法)——LSTM的输入数据本质上还是词袋模型...
  12. 从地图投影折射出的中西方文化差异
  13. Allure 安装及使用
  14. 106短信群发如何在移动信息时代下实现精准营销
  15. 什么是链接?(动态链接库和静态链接库的对比)
  16. oracle撤销段的功能,oracle撤销表空间和回滚段
  17. Json.NET使用入门(二)【反序列化】
  18. 搞懂大数据,这篇文章一定要细细品读! 大数据
  19. iview实现视频文件上传
  20. 她没有你会使用计算机英语,2017中考英语句子翻译题解题方法加真题演练附答案...

热门文章

  1. 等保基本要求三级通用要求
  2. ipad版实现横屏竖屏 详解iPad横竖屏切换解决方案
  3. c++一本通在线测评网站 1161:转进制
  4. linux 查看网口实时流速_Linux查看实时带宽流量情况
  5. 彩色图像灰度化MFC
  6. Windows 7 极限精简 x86 x64 2018年度版
  7. CentOS 桌面版安装配置(以CentOS 7为例)
  8. 【分布式机器学习】基本知识
  9. 电脑测试耗电量软件,有测验电脑耗电量的软件么 ?
  10. 多线程实现飞花令-多诗库版