且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

make clean、make mrproer 以及make distclean的区别

更新时间:2022-03-16 23:59:31

 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]oname.kooname..cmd oname..doname..tmponame.mod.c oname.symtypesonamemodules.order onameModule.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    删除的文件, 加上编辑备份文件和一些补丁文件。