通过diff工具生成补丁, patch工具打上补丁.
来源:互联网 发布:ipad淘宝网下载免费 编辑:程序博客网 时间:2024/05/21 07:53
在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你修改源码中的a.c文件, 那么, 修改后的文件还是名为a.c, 在修改之前你可以复制a.c为a.orig.c进行备份.
1.为单个文件生成补丁
1 $ diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c linux-2.6.28.8/net/sunrpc/svc.c > patch
1 diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c 2009-03-17 08:50:04.000000000 +08002 +++ linux-2.6.28.8/net/sunrpc/svc.c 2009-03-30 19:18:41.859375000 +08003 @@ -1050,11 +1050,11 @@ svc_process(struct svc_rqst *rqstp)
参数详解:
-u 显示有差异行的前后几行(上下文), 默认是前后各3行, 这样, patch中带有更多的信息.
-p 显示代码所在的c函数的信息.
2.为多个文件生成补丁
1 $ diff -uprN linux-2.6.28.8.orig/net/sunrpc/ linux-2.6.28.8/net/sunrpc/ > patch
参数详解:
-r 递归地对比一个目录和它的所有子目录(即整个目录树).
-N 如果某个文件缺少了, 就当作是空文件来对比. 如果不使用本选项, 当diff发现旧代码或者新代码缺少文件时, 只简单的提示缺少文件. 如果使用本选项, 会将新添加的文件全新打印出来作为新增的部分.
3.打补丁
生成的补丁中, 路径信息包含了你的Linux源码根目录的名称, 但其他人的源码根目录可能是其它名字, 所以, 打补丁时, 要进入你的Linux源码根目录, 并且告诉patch工具, 请忽略补丁中的路径的第一级目录(参数-p1).
1 $ patch -p1 < patch1.diff
4. 示例
给修改过的内核生成patch,然后用生成的patch给未修改过的内核打补丁
其中,目录linux-2.6.31.3为未修改过的内核,目录linux-2.6.31.3_1为修改过的内核
1 $ diff -uparN linux-2.6.31.3 linux-2.6.31.3_1/ > mypatch2 $ cd linux-2.6.31.3
同时拷贝mypatch到当前目录,因为mypatch内部记录着文件目录,所以忽略目录,直接到文件名那层即可。通过查看patch内容来决定执行patch路径3 $ patch -p1 < mypatch
注意点:
1. 打patch时,参数-p1, 是1而不是l. 为什么忽略第一级目录,因为工程的下面树状结构相同,但是工程名未必相同,所以打patch时候可以通过p1来避免这个问题。这个可以通过查看patch内容来决定具体执行patch的路径。
阅读全文
0 0
- 通过diff工具生成补丁, patch工具打上补丁.
- 制作补丁diff和打上补丁patch
- Linux系统补丁工具patch AND diff
- Linux系统补丁工具patch AND diff
- Linux系统补丁工具patch AND diff
- diff 工具使用 ,如何为Linux生成和打上patch
- linux下的程序补丁工具diff and patch
- 用diff工具制做linux内核补丁patch
- diff, patch和quilt补丁制作应用工具的介绍
- 通过diff及patch制作使用补丁
- 生成补丁 与 打补丁 diff patch
- 生成补丁 与 打补丁 diff patch
- 生成补丁 与 打补丁 diff patch
- diff patch 代码补丁
- diff&patch补丁
- 字节补丁生成工具
- 关于binary diff / patch 差分补丁工具的那些事
- 通过patch实现生成使用补丁
- PHPStorm添加第三方库的代码自动补全
- Draw Shapes——绘制图形
- 【raspberry】(四)温湿度传感器DHT11
- c#加载xml的快速高效的算法
- Java中new和不new的区别
- 通过diff工具生成补丁, patch工具打上补丁.
- c语言中静态库动态库的创建与使用
- 本地编译全志R系列的步骤7(Ubuntu 17.04非长期支持版本)V1.0(分色排版)
- BZOJ 2594: [Wc2006]水管局长数据加强版(LCT+最小生成树+离线)
- 小鸟云计算丨香港服务器带宽价格为什么差异大
- 数字证书原理
- PHP的运行机制与原理(底层)
- Xutils3.0解析数据并展示。
- input type="submit" 和"button"有什么区别?