Linux下Patch制作(打补丁)

     在linux下我们可以使用制作Patch的方式给代码打补丁,用于修复BUG、漏洞等问题。其本质就是通过diff命令比较修改前后的代码差异,将结果另存为一个Patch文件,即补丁文件。其他人通过patch命令将发布的Patch文件中的内容同步到自己的代码中,即可完成代码的升级。


1、新建一个demo/demo1/demo2/此目录包含a.c文件,内容如下:

#include <stdio.h>

int
main(void)
{
        printf("This is a demo!\n");
        return 0;
}


2、拷贝这个目录,命名为demo_new

3、将demo_new中的a.c文件改为如下内容:

#include <stdio.h>

int
main(void)
{
        printf("This is a demo!\n");
        printf("This source has been changed!\n");
        return 0;
}

4、使用diff比较两个文件,结果重定向到demo.patch中

@diff -Naur  demo/   demo_new/   >  demo.patch

     -Naur是固定参数,每次都这么用就行了

5、使用patch命令打补丁

@patch -p0 < demo.patch

     再打开demo下的文件可以看到代码已经被更新了;


6、路径参数说明

     patch命令后跟的参数-p0表示当前目录级数,目前是0,还可以是1、2、3......

     这个计数是什么意思呢?让我们打开demo.patch文件查看第一行:


     从patch文件中可以看到当前更新目录为demo/demo1/demo2/a.c,参数-p0表示执行patch命令是所在的位置是demo目录的上级目录。如果这里填-p1就表示此时处于demo目录中,以此类推。因此在使用diff命令制作patch时一定不要使用绝对路径,否则在打patch时就需要从根目录开始数当前处于哪一级了。








  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stone8761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值