始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Linux中patch文件的使用 (2)

发布时间:  2012/8/10 18:10:54

1、创建测试文件夹
  [armlinux@lqm patch]$ mkdir prj0
  [armlinux@lqm patch]$ cp test0 prj0
  [armlinux@lqm patch]$ ls
  prj0  test0  test1  test1.patch
  [armlinux@lqm patch]$ cd prj0/
  [armlinux@lqm prj0]$ ls
  test0
  [armlinux@lqm prj0]$ cat >>prj0name<<EOF
  > --------
  > prj0/prj0name
  > --------
  > EOF
  [armlinux@lqm prj0]$ ls
  prj0name  test0
  [armlinux@lqm prj0]$ cat prj0name
  --------
  prj0/prj0name
  --------
  [armlinux@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
  如果发现,会将其输出到标准输出终端,默认屏幕。当然,你也可以采用重定向,输出到指定文件,比如reject。
  $fine  .  -name  *.rej  >reject
  然后可以查看reject的内容了。

亿恩科技地址(ADD):郑州市黄河路129号天一大厦608室 邮编(ZIP):450008 传真(FAX):0371-60123888
   联系:亿恩小凡
   QQ:89317007
   电话:0371-63322206


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线