快速业务通道

Linux中patc***件的使用

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20
ux@lqm prj0]$ cd ..

  [armlinux@lqm patch]$ mkdir prj1

  [armlinux@lqm patch]$ cp test1 prj1

  [armlinux@lqm patch]$ cd prj1

  [armlinux@lqm prj1]$ cat >>prj1name<<EOF

  > ---------

  > prj1/prj1name

  > ---------

  > EOF

  [armlinux@lqm prj1]$ cat prj1name

  ---------

  prj1/prj1name

  ---------

  [armlinux@lqm prj1]$ cd ..

  2、创建补丁

  [armlinux@lqm patch]$ diff -uNr prj0 prj1 > prj1.patch

  [armlinux@lqm patch]$ more prj1.patch

  diff -uNr prj0/prj0name prj1/prj0name

  --- prj0/prj0name 2006-08-18 09:25:11.000000000 0800

   prj1/

  prj0name 1970-01-01 08:00:00.000000000 0800

  @@ -1,3 0,0 @@

  ---------

  -prj0/prj0name

  ---------

  diff -uNr prj0/prj1name prj1/prj1name

  --- prj0/prj1name 1970-01-01 08:00:00.000000000 0800

   prj1/prj1name 2006-08-18 09:26:36.000000000 0800

  @@ -0,0 1,3 @@

   ---------

   prj1/prj1name

   ---------

  diff -uNr prj0/test0 prj1/test0

  --- prj0/test0 2006-08-18 09:23:53.000000000 0800

   prj1/test0 1970-01-01 08:00:00.000000000 0800

  @@ -1,3 0,0 @@

  -111111

  -111111

  -111111

  diff -uNr prj0/test1 prj1/test1

  --- prj0/test1 1970-01-01 08:00:00.000000000 0800

   prj1/test1 2006-08-18 09:26:00.000000000 0800

  @@ -0,0 1,4 @@

   222222

   111111

   222222

   111111

  [armlinux@lqm patch]$ ls

  prj0 prj1 prj1.patch test0 test1 test1.patch

  [armlinux@lqm patch]$ cp prj1.patch ./prj0

  [armlinux@lqm patch]$ cd prj0

  [armlinux@lqm prj0]$ patch -p1 < prj1.patch

  patching file prj0name

  patching file prj1name

  patching file test0

  patching file test1

  [armlinux@lqm prj0]$ ls

  prj1name prj1.patch test1

  [armlinux@lqm prj0]$ patch -R -p1 < prj1.patch

  patching file prj0name

  patching file prj1name

  patching file test0

  patching file test1

  [armlinux@lqm prj0]$ ls

  prj0name prj1.patch test0

  -------------------

  总结一下:

  单个文件

  diff –uN from-file to-file >to-file.patch

  patch –p0 < to-file.p

  atch

  patch –RE –p0 < to-file.patch

  多个文件

  diff –uNr from-docu to-docu >to-docu.patch

  patch –p1 < to-docu.patch

  patch –R –p1 <to-docu.patch

  -------------------

  三、应用

  为内核打补丁.前面在创建交叉编译工具链时,其中有一步就是为内核打补丁.当时还不是特别了解,现在很清晰了.参考前面的文章《基于arm Linux嵌入式开发的开发工具链的建立》.

  1、是解压,发布的补丁文件都是使用gzip压缩的.

  $gunzip ../setup-dir/ patch-2.4.21-rmk1.gz

  2、然后进入你的内核源代码目录

  $cd linux-2.4.21

  3、打补丁

  $patch –p1 < ../../setup-dir/patch-2.4.21-rmk1

  打完补丁后,需要检查一下有没有拒绝执行的文件,即检查.rej文件的存在.使用命令:

  $find . -name *.rej

  如果发现,会将其输出到标准输出终端

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号