make clean、make mrproper、make distclean的区别【转】

本文转载自:http://blog.csdn.net/liyayao/article/details/6818061

内核编译时, 到底用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 mrproper, 会先执行make clean, 执行make distclean之前, 会先执行make mrproper。
再回到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。建议重新编译的时候注意看看改动是否都落实了。

时间: 2024-08-06 11:37:45

make clean、make mrproper、make distclean的区别【转】的相关文章

【转】内核编译时, 到底用make clean, make mrproper还是make distclean(转载)

原文网址:http://dongyulong.blog.51cto.com/1451604/449470 内核编译时, 到底用make clean, make mrproper还是make distclean 在编译内核时,  被make clean, make mrproer 和 make distclean搞的纠结, 稍微总结一下这三者之间的区别: 解压内核源码包后, 到内核源代码目录树的顶层目录, 执行# make helpCleaning targets:  clean         

make clean 和make distclean的区别

make clean 清除之前编译的可执行文件及配置文件. make distclean 清除所有生成的文件. Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件. make clean 清除上次的make命令所产生的object文件(后缀为".o"的文件)及可执行文件. make install 将编译成功的可执行文件安装到系统目录中,一般为/usr/lo

make clean与make distclean的区别

make clean仅仅是清除之前编译的可执行文件及配置文件. 而make distclean要清除所有生成的文件. Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件. make clean 清除上次的make命令所产生的object文件(后缀为".o"的文件)及可执行文件. make install 将编译成功的可执行文件安装到系统目录中,一般为/usr

CentOS7手动编译安装内核4.11.7

1. 进入/usr/src/目录 cd /usr/src 2. 下载内核源码,网址:https://www.kernel.org wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.11.7.tar.xz 3. 经过了蜗牛般的下载之后,解压源码包 tar xf linux-4.11.7.tar.xz 4. 进入源码目录,执行清理工作: cd linux-4.11.7 make mrproper 注意clean,mrproper,di

内核模块

linux内核:单内核+内核模块 内核/boot/vmlinuz-version 模块/lib/modules/version/....ko 用户访问监控内核:/proc /sys /proc/sys/可用来改变内核运行参数 echo "gentoo" > /proc/sys/kernel/hostname sysctl -w kernel.hostname="gentoo"立即生效,不能永久有效 /etc/sysctl.conf设置永久有效->sysc

uboot 第三天学习

make jCPU_NUM 以CPU_NUM数量同时进行编译CPU_NUM = 当前PC的处理器数量*处理器的核心数 从上电开始1.系统上电,执行固化在IROM中的代码,目的初始化基本的系统功能,已经加载BL1代码2.BL1代码继续进行初始化,初始化DRAM控制器(400000000-80000000可用)3.uboot.bin开始在0x43E00000 地址位置开始执行 common(uboot命令)556 U_BOOT_CMD( ) 这个宏函数 设置了当前命令执行以及需要执行函数 do_mo

make clean、make mrproer、make distclean

make clean.make mrproer 以及make distclean的区别 解压内核源码包后, 到内核源代码目录树的顶层目录, 执行# make helpCleaning targets:  clean           - Remove most generated files but keep the config and                    enough build support to build external modules  mrproper   

ubuntu编译3.5内核步骤

1.win7下安装VMware虚拟机,VMware-workstation-full-11.1.2,序列号: 1F04Z-6D111-7Z029-AV0Q4-3AEH8. 2.安装ubuntu 12.04.02系统 http://mirrors.163.com/ubuntu-releases/  网易的开源镜像网站 http://mirrors.sohu.com/ubuntu-releases/ 搜狐的开源镜像网站 3.将下好的 linux-3.5-20140422 内核copy到ubuntu的

linux内核编译相关

参考:http://www.arm.linux.org.uk/docs/kerncomp.php 一. 内核编译1) linux 2.4make clean/make mrpropermake depmake zImagemake modules //编译模块2) linux 2.6make clean/make mrpropermake // 编译内核同时编译了模块3) 模块安装上述步骤完成后,模块分布在各个内核目录下,通过下面命令安装到具体目录下:make modules_install I