<Linux>使用quilt工具制作补丁(patch)文件

您所在的位置:网站首页 tplinkwr720n电脑怎么设置 <Linux>使用quilt工具制作补丁(patch)文件

<Linux>使用quilt工具制作补丁(patch)文件

2023-08-17 22:12| 来源: 网络整理| 查看: 265

Linux使用quilt工具制作补丁文件 前言一、安装quilt工具二、一个需要被打补丁的文件三、quilt new命令创建初始补丁文件四、quilt add命令添加目标文件五、修改目标文件代码内容六、quilt refresh命令生成补丁文件七、测试结果

前言

patch是Linux项目编程下常用的工具。 例如:      一份有Makefile管理的驱动代码文件,每次编译时会有Makefile规则从指定目录下解压到固件目录下,此时在驱动代码中添加了一些功能或者改变了一些功能代码,为了不改变原驱动代码,便可以将新修改的代码做成patch文件,使用Makefile在每次编译固件时候将patch安装到代码中。

提示:以下步骤均在ubuntu下进行示范操作

一、安装quilt工具

ubuntu下打开终端界面输入以下命令安装quilt:

sudo apt-get install quilt

安装完成quilt工具后,可以使用以下命令查看quilt支持的操作:

quilt --help

输入命令后可以看到以下输出:

Usage: quilt [--trace[=verbose]] [--quiltrc=XX] command [-h] ... quilt --version Commands are: add fold mail refresh snapshot annotate fork new remove top applied graph next rename unapplied delete grep patches revert upgrade diff header pop series edit import previous setup files init push shell Global options: --trace Runs the command in bash trace mode (-x). For internal debugging. --quiltrc file Use the specified configuration file instead of ~/.quiltrc (or /etc/quilt.quiltrc if ~/.quiltrc does not exist). See the pdf documentation for details about its possible contents. The special value "-" causes quilt not to read any configuration file. --version Print the version number and exit immediately.

quilt工具支持的操作如下:

quilt new 创建一个新的补丁环境 quilt top 查看最近的一个patch quilt add {files} 关联文件 quilt remove files 取消关联文件,是add相反的操作 quilt diff 查看对比修改的内容 quilt files 查看当前patch关联的文件 quilt series 查看左右的patch quilt pop 回退刚才文件的改动

这里只做quilt的入门使用,只使用new、add、refresh三个命令。

new:创建新的patch文件环境 add:添加需要打补丁的文件到patch环境中 refresh:修改完成后,将修该记录更新至补丁中

二、一个需要被打补丁的文件

以简单的print helloworld做示例: 准备一个main.c,目标代码为以下内容,需要将第2个printf中的字符串"Not patching yet!“修改为"finsh patching”,同时添加一个打印代码”printf(“我大意了 没有闪\n”);“

#include int main(int argv,char **argc) { printf("Hello world\n"); printf("Not patching yet!\n"); return 0; } 三、quilt new命令创建初始补丁文件

此时需要用到quilt工具来初始化一个补丁文件 这里以与main.c的同目录下进行创建,使用以下命令:

quilt new xxxx.patch 示例: quilt new 0000.patch

其中xxxx为补丁的名称,可以先随意创建一个名称,完成补丁后再修改至需要名称。 创建patch成功后,可以在目录下看到一个名称为patches的文件夹,文件夹里面只有一个"series"文件。

四、quilt add命令添加目标文件

创建补丁后,需要将要修改的文件添加至补丁环境中。使用以下命令:

quilt add xxxx.c 示例: quilt add main.c

添加成功后会有以下提示:

File main.c added to patch patches/0000.patch 五、修改目标文件代码内容

示例中会往main.c添加以下内容

将第2个printf中的字符串"Not patching yet!“修改为"finsh patching”添加一个打印代码printf(“我大意了 没有闪\n”);

原代码为:

#include int main(int argv,char **argc) { printf("Hello world\n"); printf("Not patching yet!\n"); return 0; }

修改后的代码为

#include int main(int argv,char **argc) { printf("Hello world\n"); printf("Finsh patching!\n"); printf("我大意了 没有闪\n"); return 0; } 六、quilt refresh命令生成补丁文件

修改代码完成后,在创建patch的目录下使用以下命令生成补丁文件:

quilt refresh -pab

生成补丁正确,可以看到以下信息:

Refreshed patch patches/0000.patch

此时可以在同目录下,查看patches文件夹中的补丁文件 生成补丁文件如下(注释为手动添加,用于解释补丁文件构成):

Index: b/main.c =================================================================== --- a/main.c # "---"表示旧文件 +++ b/main.c # "+++"表示新文件 @@ -3,7 +3,8 @@ # @@ @@,表示补丁影响行数内容-3,7表示从旧文件的3行开始7行结束,+3,8表示新文件的3行开始8行结束 int main(int argv,char **argc) { printf("Hello world\n"); - printf("Not patching yet!\n"); #- 表示删除该信息 + printf("Finsh patching!\n"); #+ 表示添加该信息 + printf("我大意了 没有闪\n"); return 0; } 七、测试结果

首先执行未打补丁前的文件,输出如下:

Hello world Not patching yet!

使用打补丁命令将patches/0000.patch补丁打到main.c中:

patch main.c


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3