今天看Linux内核的源代码的最上层的MakeFile,就是直接打开内核文杰下面那个!发现里面构架完所有目标对象,并把修改过的源文件重新编译之后有这么一段:
clean:
rm -f Image System.map tmp_make core boot/bootsect boot/setup
rm -f init/*.o tools/system tools/build boot/*.o
(cd mm;make clean)
(cd fs;make clean)
(cd kernel;make clean)
(cd lib;make clean)
这一段时为什么呢?尤其是前2行,把那几个文件删掉后,下一次如何再更新呢?不大理解!
哪位大哥大姐帮忙解释一下啊
wucongdonglai 于 2010-07-19 08:31:11发表:
7# alick
哦,好的,明白了,谢谢啊
kevin_freedom 于 2010-07-18 11:06:41发表:
可以仔细看下makefile文档前面的内容,后面删除的这些.o等文件是makefile执行过程中自动编译产生的,所以删除没关系,因为下次执行make它又会自动生成。
alick 于 2010-07-17 12:40:55发表:
make clean
就是用来清理编译过程中生成的.o文件,可执行文件等,用来还原得到一个只含源码的软件包。
想要重新编译,再make就行
deepwhite 于 2010-07-17 12:27:58发表:
那按照你的理解的话,如果我不小心删除了其中的某个.o文件,以后再编译岂不总是会出问题?
更新的话,用的也是rm -rf,加上-rf选项后,无论贝删除的目标存在与否,都不会报错退出,除非执行删除操作的用户的权限不够。
例如,你的主目录下没有aaaa这个文件,但是你执行:
[code]
rm -rf ~/aaaa
[/code]
并不会报错。
所以你的担心是没有必要的。
wucongdonglai 于 2010-07-17 09:02:22发表:
3# 王中云
您的意思是指
Image System.map tmp_make core boot/bootsect boot/setup
-f init/*.o tools/system tools/build boot/*.o
这些文件都是临时文件?能否讲具体点!
我在Makefile中叶没有看到有重新构架这些文件的语句啊?所以就不明白了
wucongdonglai 于 2010-07-17 09:00:07发表:
2# deepwhite
我的意思是这次make是可以根据这Makefile解决某个源文件被改变而导致相关目标文件需要重新编译的情况!但是比如说下一次又有一个源文件被更改了,那么相关的目标文件不是得重新编译吗?但是重新编译时是要用到这里删除的几个文件的,那时候这些已经被删除了,岂不是无法重新编译了?
王中云 于 2010-07-16 20:21:29发表:
清理临时文件
deepwhite 于 2010-07-16 17:23:01发表:
什么叫“下一次如何再更新”?没看懂你的意思。