Linux下diff命令与patch命令使用

1、制作补丁

diff的使用

diff可以完成比较功能,生成补丁文件

格式:diff [option] oldfile newfile

常用的option选项有:

-r 对目录进行递归处理

-u 输出统一格式,diff有"传统"和"统一"两种格式,现在一般使用"统一"格式,比较而言,统一格式生成的文件大,但包含了更多的信息,有利于阅读与定位

-N 补丁中包含整个新文件

-a 补丁中包含二进制文件

缺省时,diff向标准输出打印,所以一般都重定向到文件并以patch为后缀,也就是所谓的补丁文件


2、打补丁

patch 命令用于打补丁,补丁文件是使用diff产生的

patch 命令语法

patch [  -b [ -B Prefix ] ] [  -f ] [ -l ] [ -N ] [ -R ] [  -s ] [  -v ] [  -c | -e | -n ] [  -d Directory ] [  -D Define ] [  -F Number ] [  -i PatchFile ] [  -o OutFile ] [  -p Number ] [  -r RejectFile ] [  -x Number ] [ File ]

patch 命令失败或拒绝接受补丁时,会产生一个和原文件同名,以".rej"为后缀的差异文件。    当知道 -b 时,会产生一个和原文件同名,以".orig"为后缀的备份文件。

常使用的 patch 参数:

-p 指定目录级别(从路径全称中除去几层目录)

如,如果补丁文件包含路径名称 /curds/whey/src/blurfl/blurfl.c,那么:

  -p 0 使用完整路径名   -p 1 除去前导斜杠,留下 curds/whey/src/blurfl/blurfl.c。   -p 4 除去前导斜杠和前三个目录,留下 blurfl/blurfl.c。

    -d Directory 打补丁前,更改当前目录到指定目录

-i PatchFile 从指定文件,而不是从标准输入中读取补丁信息

-R 逆向补丁,这个选项在防止打错补丁很有用处


3、注意

1、要打补丁的文件必须是未做任何修改的(这个可以打开补丁文件看一下删除的文件的日期是否和我们要打补丁的文件一样就可以了)。我之前就是因为修改了厂商给的源码所以打补丁的时间打不进去,会出错,后来找资料才明白不能改打补丁前的文件。

2、还有一个就是有的补丁要一个一个的打,那是补丁做成这样的,一般厂商给说明是否需要一个一个的打,还直接打最后一个版本的就OK了,但我认为一个一个的打的补丁要严谨些,因为它的每一个补丁表示了一次功能性的修改,这样每次都可以验证补丁的正确性了。


4、实例

a -- 制作补丁

        命令: diff -urN linux-3.4.2 linux-3.4.2-my  > linux-3.4.2-my.patch

        说明:

            当前路径为:./ 。

            该路径(./ )下有 linux-3.4.2 目录,其是linux-3.4.2的源码压缩包解压所得(linux-3.4.2源码未做任何修改的)。

            该路径(./ )下有 linux-3.4.2-my 目录,其是由linux-3.4.2的源码修改后,符合开发板正常使用的源码(根据linux-3.4.2源码修改后的)。

            生成 linux-3.4.2-my.patch 补丁文件。


b -- 打补丁

        命令: patch -p1 < ../linux-3.4.2-my.patch

        说明:

            当前路径为:./linux-3.4.2,进入到未做任何修改的linux-3.4.2的目录下执行patch命令
            
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值