内核编译时, 到底用make clean, make mrproper还是make distclean
来源:互联网 发布:中锐网络怎么样 编辑:程序博客网 时间:2024/06/04 19:52
转自:http://dongyulong.blog.51cto.com/1451604/449470
内核编译时, 到底用make clean, make mrproper还是make distclean
在编译内核时, 被make clean, make mrproer 和 make distclean搞的纠结, 稍微总结一下这三者之间的区别:
- # make help
- Cleaning targets:
- clean - Remove most generated files but keep the config and
- enough build support to build external modules
- mrproper - Remove all generated files + config + various backup files
- distclean - mrproper + remove editor backup and patch files
看帮助可以发现删除的文件范围从小到大依次为: make clean < make mrproper < make distclean, 查看源码目录树的顶层目录下的Makefile求证, 可以发现:
- clean: archclean $(clean-dirs)
- $(call cmd,rmdirs)
- $(call cmd,rmfiles)
- @find . $(RCS_FIND_IGNORE) \
- \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
- -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
- -o -name '*.symtypes' -o -name 'modules.order' \
- -o -name 'Module.markers' \) \
- -type f -print | xargs rm -f
- mrproper: clean archmrproper $(mrproper-dirs)
- $(call cmd,rmdirs)
- $(call cmd,rmfiles)
- distclean: mrproper
- @find $(srctree) $(RCS_FIND_IGNORE) \
- \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
- -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
- -o -name '.*.rej' -o -size 0 \
- -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
- -type f -print | xargs rm -f
再回到make help的结果:
make clean 删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块
make mrproper 删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件
make distclean mrproper删除的文件, 加上编辑备份文件和一些补丁文件。
其 实, 对于一个刚刚从kernel.org上下载的内核源码包, 可以不用执行make clean/make mrproper/make distclean, 因为源码包的状态本身就是clean的。
另外, 就算编译过内核之后, 需不需要clean一下, 个人觉得应该具体问题具体对待, 且看linuxsir上也有兄弟对这个问题有疑问:
Q: 很多内核编译的教程都说在make之前要先make mrproper,清除以前编译的产物。但编译器/链接器本身就会检查文件的日期,并确定是否需要重新编译/链接。如果清除了,很多以前已经编译过的代码 又得重新编译。如果说这样能节省硬盘空间的话,那只有那些先前编译过而现在不再需要的模块的空间被节省了,而代价则是编译时间延长了。个人觉得得不偿失, 至少不需要每次编译都来一次make mrproper。
A: 我没有make mrproper,每次修改内核配置后很快就能编译完成,很方便,也没发现什么问题
如果make不能确定那些文件要重新编译,那还要make做什 么
个人观点,尽信书则不如无书,实践出真知,呵呵
A: 不执行make mrproper是否出错,取决于Makefile的智能化程度。如果Makefile没能完成你所要求的全部改动,很可能编译出来的内核不如你所愿,甚 至可能导致panic。建议重新编译的时候注意看看改动是否都落实了。
首先,这两个命令都是用于删除编译内核时产生的相关文件的。
两者的区别如下:
make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。
make clean命令则是用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以你若只想删除前一次编译过程的残留数据,只需执行make clean命令。
总而言之,make mrproper删除的范围比make clean大,实际上,make mrproper在具体执行时第一步就是调用make cle 0 0
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- [Linux][Makefile]:内核编译时, 到底用make clean, make mrproper还是make distclean
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- 内核编译时, 到底用make clean, make mrproper还是make distclean(转载)
- 内核编译时, 到底用make clean, make mrproper还是make distclean(转载)
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- linux内核编译时用make clean ,make mrproper 还是make distclean
- 内核编译时, 到底用make clean, make mrproper还是make distclea
- make clean, make mrproper 还是 make distclean
- make clean,mrproper,distclean
- make clean,mrproper,distclean
- make clean、 make mrproper、make distclean
- make clean, make mrproper, make distclean 理解
- make clean、 make mrproper、make distclean的区别
- make clean、 make mrproper、make distclean的区别
- make clean、 make mrproper、make distclean的区别
- 语言or方向,读研or工作
- hdoj Calculation 2 3501 (欧拉函数)
- Chapter07 包和引入
- JAVA实现对SQLServer增,删,改,查
- Ubuntu 入门 Lession 04.惯用关机命令
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- 从哈密尔顿路径谈NP问题
- nyoj 523 亡命逃窜 【三维bfs】
- Android ProGuard 混淆 详解
- 机器学习之模型评估与模型选择
- poj 1013 枚举
- left、offsetLeft、width、offsetWidth区别
- 【小技巧】无法连接到安全检查代理服务器,套接字创建失败
- 检查 android.mk条件如果执行,在android.mk中打印日志信息