linux补丁的制作方法
时间:2009-04-13 来源:creatory
说明:
本人绝对新手,对于所举的例子也是自己编的,如果有什么不对之间尽管指正,谢谢!
补丁程序用于更新一个旧版本的代码,修正其bug,采用补丁的优点是只需要少量的比较代 码就可以修改源程序而不用再一次发布整个源程序,补丁文件短小,实用性高.
补丁文件是由diff命令比较两个文件的不同之处生成的一个特殊文件
假设我们有两个文件print_old.c和print_new.c,其内容如下:
/*print_old.c*/
extern void print(const char *msg); void print(const char *msg){
if(msg!=NULL)
printf("%s\n",msg);
} /*print_new.c*/
extern int print(const char *msg); int print(const char *msg){
if(msg!=NULL)
{
printf("%s\n");
return 1;
}
return 0;
}
由于我们先前发布的程序版本是print_old.c,但是由于某种需要我们将代码文件重新改进了,但是我们 并不需要再一次发布整个程序,只需要发布针对其中某个源文件的补丁即可。
diff [options] files
-r 开启递归子目录选项
-N 保留老版本文件
-u 使用统一输入格式
制作补丁:
#diff -rNu print_old.c print_new.c >print_old_new.patch
生成了补丁文件print_old_new.patch,由是在我们的网站上发布这个补丁
当使用者下载到这个补丁时,将它拷贝到print_old.c文件的目录下,打补丁
#patch -p0 <print_old_new.patch
即可,这样print_old.c文件中的代码便做了相应的修正,这样再重新编译生成的程序就是最新版的了.
补丁程序用于更新一个旧版本的代码,修正其bug,采用补丁的优点是只需要少量的比较代 码就可以修改源程序而不用再一次发布整个源程序,补丁文件短小,实用性高.
补丁文件是由diff命令比较两个文件的不同之处生成的一个特殊文件
假设我们有两个文件print_old.c和print_new.c,其内容如下:
/*print_old.c*/
extern void print(const char *msg); void print(const char *msg){
if(msg!=NULL)
printf("%s\n",msg);
} /*print_new.c*/
extern int print(const char *msg); int print(const char *msg){
if(msg!=NULL)
{
printf("%s\n");
return 1;
}
return 0;
}
由于我们先前发布的程序版本是print_old.c,但是由于某种需要我们将代码文件重新改进了,但是我们 并不需要再一次发布整个程序,只需要发布针对其中某个源文件的补丁即可。
diff [options] files
-r 开启递归子目录选项
-N 保留老版本文件
-u 使用统一输入格式
制作补丁:
#diff -rNu print_old.c print_new.c >print_old_new.patch
生成了补丁文件print_old_new.patch,由是在我们的网站上发布这个补丁
当使用者下载到这个补丁时,将它拷贝到print_old.c文件的目录下,打补丁
#patch -p0 <print_old_new.patch
即可,这样print_old.c文件中的代码便做了相应的修正,这样再重新编译生成的程序就是最新版的了.
相关阅读 更多 +