在做usb-2.6.12LE06.patch.tar.gz补丁时候出现错误,所以找patch的方法,看到了关于参数的解释,学习了
blog.chinaunix.net/u1/48180/showart_1868730.html 下面是我出现的错误备份一下, // 原因是patch的目录不对,应该在kernel同级的drivers/usb/目录下进行的哦 [root@localhost usb]# tar zxvf usb-2.6.12LE06.patch.tar.gz usb-2.6.12.patch [root@localhost usb]# ls usb-2.6.12LE06.patch.tar.gz usb-2.6.12.patch [root@localhost usb]# patch -p1 < usb-2.6.12.patch can't find file to patch at input line 4 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff -ruN usb_old/Makefile usb/Makefile |--- usb_old/Makefile 2005-06-19 19:09:13.000000000 +0200 |+++ usb/Makefile 2005-11-06 00:44:46.000000000 +0100 -------------------------- File to patch: Skip this patch? [y] y Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 15 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff -ruN usb_old/media/Kconfig usb/media/Kconfig |--- usb_old/media/Kconfig 2005-06-19 17:49:07.000000000 +0200 |+++ usb/media/Kconfig 2005-11-25 21:14:39.000000000 +0100 -------------------------- File to patch: Skip this patch? [y] y Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 38 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff -ruN usb_old/media/Makefile usb/media/Makefile |--- usb_old/media/Makefile 2005-06-19 17:49:07.000000000 +0200 |+++ usb/media/Makefile 2005-11-05 23:05:56.000000000 +0100 -------------------------- File to patch: Skip this patch? [y] y Skipping patch. 1 out of 1 hunk ignored patching file media/spca5xx/cs2102.h patching file media/spca5xx/hdcs2020.h patching file media/spca5xx/hv7131b.h patching file media/spca5xx/hv7131c.h patching file media/spca5xx/icm105a.h patching file media/spca5xx/Makefile patching file media/spca5xx/Makefile.2.4 patching file media/spca5xx/Makefile.org patching file media/spca5xx/pas106b.h patching file media/spca5xx/pb0330.h patching file media/spca5xx/sn9cxxx.h patching file media/spca5xx/sp5xxfw2.dat patching file media/spca5xx/sp5xxfw2.h patching file media/spca5xx/spca5xx.h patching file media/spca5xx/spcaCompat.h patching file media/spca5xx/spca_core.c patching file media/spca5xx/spcadecoder.c patching file media/spca5xx/spcadecoder.h patching file media/spca5xx/spcausb.h patching file media/spca5xx/tas5130c.h patching file media/spca5xx/zc3xx.h [root@localhost usb]# ##################### 下面来自无名博客: vcdog.cublog.cn 的具体内容: 今天上QQ的时候发现eva不能用了,后来又看到了解决方法,所以想打个补丁,不过不会:-)。后来查了查明白了,写了个总结,分享一下,也不知道以前有没有这方面的东西,希望我这个不是多余的。 创建补丁文件:
代码:
在创建patch的时候文件夹的层数应当是一样的,比如
代码:
而
代码:
如何使用patch 对于一个patch文件,有两种常用使用方法: 1.
代码:
代码:
参数-p来指定从第几层开始比较。比如有一个patch文件的补丁头是这样的:
代码:
如果使用参数-p1,就表示忽略第一层,从当前目录找一个叫modules的目录,在它下面找一个叫modules的目录。这样会忽略掉补丁头提到的new目录。 依此类推。 patch文件的结构 补丁头 补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。 一个补丁文件中的多个补丁 一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。 块 块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。 块的缩进 块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。 块的第一列 +号表示这一行是要加上的。 -号表示这一行是要删除的。 没有加号也没有减号表示这里只是引用的而不需要修改。 一个patch的例子
代码:
这个例子是由命令
代码:
它修改了两个文件,new/modules/pcitable和new/usr/share/kudzu/pcitable。 第一个补丁头包含两个块,分别增加了两行和一行。 |