linux中patch补丁的文件格式和使用


前言

在看韦东山老师的视频的时候(12期衔接视频,u-boot分析之编译体验),看到给内核打补丁这一块,老师讲的并不是特别的详细
。于是自己百度了一下下,大致总结一点点


“补丁”是一种能够将旧的文件(原始linux内核)修改成新的文件(修改后的内核)的一种不知道什么东西,就像衣服打上补丁,变成新的衣服一样。

一、patch补丁的文件格式

两个文件

旧文件 hello.c

int main()
{
	printf("yes\n");
	printf("hello");
	//这是注释
	//这也是注释
}
retuen 0;

修改后的新文件 hello_world.c

int main()
{
	printf("hello world");
	//这是注释
	//这也是注释
}
retuen 0;

生成补丁文件

命令:

diff -urN hello.c hello_world.c > diff.patch

生成的文件内容:

--- hello.c 		1970-01-01 08:00:00.000000000 +0800
+++ hello_world.c	2017-11-03 14:19:59.249590991 +0800
 @@ -3,5 +3,4 @@
- 	printf("yes\n");
-	printf("hello");
+	printf("hello world");
	//这是注释
	//这也是注释
 }

解释格式

--- hello.c 		1970-01-01 08:00:00.000000000 +0800
+++ hello_world.c	2017-11-03 14:19:59.249590991 +0800

- - - 表示被修改的文件名 后面是时间等信息
+++ 表示修改后的文件名 后面是时间等信息


 @@ -3,5 +3,4 @@

-3,5 表示: 原文件的第3行开始,一共5行有差异
+3,4 表示: 修改后的文件第3行开始,一共4行有差异
@@ @@表示一个块的开始


- 	printf("yes\n");
-	printf("hello");
+	printf("hello world");
	//这是注释
	//这也是注释
 }

- 表示:修改后的文件删除这一行
+表示:修改后的文件增加这一行
空格 表示:原文件和修改后的文件都有这一行
注意:一般保留三行未修改行,便于观察。


二、patch补丁的使用

1.diff参数

-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。

-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。

-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。


2.patch 使用方法

使用方法自行百度,下面介绍视频中介绍的比较简单的方法:
1、cd到解压的内核文件夹中
2、使用patch p1 < …/u-boot-1.1.6_jz2440.patch

-p<剥离层级>或–strip=<剥离层级>  设置欲剥离几层路径名称
p1表示去掉第一层目录

例如u-boot-1.1.6_jz2440.patch 这个补丁中

- - - u-boot-1.1.6/board/100ask24x0/100ask24x0.c
+++ u-boot-1.1.6_jz2440_2017/board/100ask24x0/100ask24x0.c
因为已经在u-boot-1.1.6这个文件夹中,所以使用p1忽略掉上面的粗体部分的目录


总结

此文只是在自己学习过程中的小笔记,第一次这么做笔记,表达不清还请见谅,

如有错误,欢迎指出,非常感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值