这有什么好处呢?首先,没有更动过的文件的目标文件
(object file)
根本就不需要重新编译,而且有
更动过的文件又可以利用
make
来自动
update (
更新
)
,如此一来,我们原先的设定
(makefile
文件里
面的规则
)
½不需要重新改写或侦测!可以½省很多宝贵的时间呢
(
例如后续章½会提到的核心的编
译!
)
从上面的说明当中,我们可以发现,如果可以½旧版的原始码数据改写成新版的版本,
那么就能直
½编译了,而不需要½全部的新版
Tarball
重新下载一次呢!可以½省带宽与时间说!那么如何改写
原始码?
难道要我们一个文件一个文件去参考然后修订吗?当然没有这么没人性!
我们在
第十一章、正规表示法
的时候有提到一个比对文件的指令,那就是
diff
,这个指令可以½『
个文件之间的差异性列出来
』呢!那我们也知道新旧版本的文件之间,
其实只有修改一些程序代码
而已,那么我们可以透过
diff
比对出新旧版本之间的文字差异,然后再以相关的指令来½旧版的文
件更新吗?
呵呵!当然可以啦!那就是
patch
这个指令啦!很多的软件开发商在更新了原始码之后,
几乎都会释出所谓的
patch file
,也就是直½½原始码
update
而已的一个方式喔!我们底下以一个简
单的范例来说明给你了½喔!
关于
diff
patch
的基本用法我们在第十一章都谈过了,所以这里不再就这两个指令的语法½行½
绍,
请回去参阅该章的内容。这里我们来举个案例½释一下好了。假设我们刚刚计算三½函数的程
(main)
历经多次改版,
0.1
版½会简单的输出,
0.2
版的输出就会含有½度值,因此这两个版
本的内容不相同。如下所示,两个文件的意义为:
.
http://linux.vbird.org/linux_basic/0520source/main-0.1.tgz
main
0.1
版;
.
http://linux.vbird.org/linux_basic/0520source/main_0.1_to_0.2.patch
main
0.1
升级到
0.2
patch file
请您先下载这两个文件,并且½压缩到你的
/root
底下。你会发现系统产生一个名为
main-0.1
的目
录。
该目录内含有五个文件,就是刚刚的程序加上一个
Makefile
的规则文件。你可以到该目录下
去看看
Makefile
的内容,
在这一版当中含有
main
clean
两个目标功能而已。至于
0.2
版则加
入了
install
uninstall
的规则设定。
½下来,请看一下我们的作法啰:
.
测试旧版程序的功能
[root@study ~]#
tar
-
zxvf main
-
0.1.tgz
[root@study ~]#
cd main
-
0.1
[root@study main
-
0.1]#
make clean main
[root@study main
-
0.1]#
./main
version
0.1
Please input your name:
VBird
Please enter the degree angle (ex> 90):
45
Hi, Dear VBird, nice to meet you.
The
Sin
is: 0.71
The
Cos
is: 0.71
与之前的½果非常类似,只是鸟哥½
Makefile
直½给您了!但如果你下达
make install
时,系统会
告知没有
install
target
啊!而且版本是
0.1
也告知了。那么如何更新到
0.2
版呢?透过这个
patch
文件吧!这个文件的内容有点像这样: