uclinux 编译心得七:根据make 的trace信息,分析处理过程

|Makefile:16
|all: tools automake subdirs romfs image
     处理第1个目标:tools
|    *//Makefile:16
|    *.PHONY: tools
|    *tools: ucfront cksum
|    *      chmod +x tools/romfs-inst.sh tools/modules-alias.sh tools/build-udev-perms.sh
     *      //Makefile:36
     *      ucfront: tools/ucfront/*.c
     *        $(MAKE) -C tools/ucfront
     *        ln -sf $(ROOTDIR)/tools/ucfront/ucfront tools/ucfront-gcc
     *        ln -sf $(ROOTDIR)/tools/ucfront/ucfront tools/ucfront-g++
     *        ln -sf $(ROOTDIR)/tools/ucfront/ucfront-ld tools/ucfront-ld
     *        ln -sf $(ROOTDIR)/tools/ucfront/ucfront-env tools/ucfront-env
     *        ln -sf $(ROOTDIR)/tools/ucfront/jlibtool tools/jlibtool
    *
     *
     *     Makefile:46: update target 'tools/cksum' due to: tools/sg-cksum/print.c tools/sg-cksum/crc.c tools/sg-cksum/sum2.c tools/sg-cksum/crc32.c tools/sg-cksum/sum1.c tools/sg-cksum/cksum.c
     *     tools/cksum: tools/sg-cksum/*.c
     *        $(MAKE) -C tools/sg-cksum
     *        ln -sf $(ROOTDIR)/tools/sg-cksum/cksum tools/cksum
     *   
     *          make -C tools/sg-cksum
     *          make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/tools/sg-cksum'
     *          Makefile:12: update target 'cksum' due to: cksum.c crc.c print.c sum1.c sum2.c crc32.c
     *          $(PROG): $(SRCS)
    *             $(HOSTCC) -Werror -Wall -DHAVE_MKSTEMP -o $@ $^
     *    
     *     依赖关系目标已搞定
     *     chmod +x tools/romfs-inst.sh tools/modules-alias.sh tools/build-udev-perms.sh
    +处理第2个目标:automake
    +Makefile:51: target 'automake' does not exist
    +.PHONY: automake
    +automake:
   +    $(MAKE) -C config automake
    +
    +     make -C config automake
    +     automake: ../lib/Makefile.auto ../user/Makefile.auto 
    +     因为之前make menuconfig中已经处理两个该目标,不做操作

   
    处理第3个目标:subdirs
    Makefile:27 没有找到VENDOR_TOPDIRS的定义。
    DIRS    = $(VENDOR_TOPDIRS) include lib include user
   
    .PHONY: subdirs
--LINUX target-----    subdirs: linux modules
--LINUX target-----     for dir in $(DIRS) ; do [ ! -d $$dir ] || $(MAKEARCH) -C $$dir || exit 1 ; done
--LINUX target-----
--LINUX target-----      
--LINUX target-----        这里就需要先处理linux 和 modules
--LINUX target-----        Makefile:201: target 'linux' does not exist
--LINUX target-----        .PHONY: linux
--LINUX target-----        linux:
--LINUX target-----         . $(LINUXDIR)/.config; if [ "$$CONFIG_INITRAMFS_SOURCE" != "" ]; then \
--LINUX target-----             ( \
--LINUX target-----          cd $(LINUXDIR) ; \
--LINUX target-----          mkdir -p `dirname $$CONFIG_INITRAMFS_SOURCE`; \
--LINUX target-----          touch $$CONFIG_INITRAMFS_SOURCE || exit 1; \
--LINUX target-----             ) \
--LINUX target-----         fi
--LINUX target-----         @if expr "$(LINUXDIR)" : 'linux-2\.[0-4].*' > /dev/null && \
--LINUX target-----            [ ! -f $(LINUXDIR)/.depend ] ; then \
--LINUX target-----          echo "ERROR: you need to do a 'make dep' first" ; \
--LINUX target-----          exit 1 ; \
--LINUX target-----         fi
--LINUX target-----         $(MAKEARCH_KERNEL) -j$(HOST_NCPU) -C $(LINUXDIR) $(LINUXTARGET) || exit 1
--LINUX target-----         @if ! expr "$(LINUXDIR)" : 'linux-2.[01234].*' > /dev/null ; then \
--LINUX target-----          : ignore failure in headers_install; \
--LINUX target-----          $(MAKEARCH_KERNEL) -j$(HOST_NCPU) -C $(LINUXDIR) headers_install || true; \
--LINUX target-----         fi
--LINUX target-----         if [ -f $(LINUXDIR)/vmlinux ]; then \
--LINUX target-----          ln -f $(LINUXDIR)/vmlinux $(LINUXDIR)/linux ; \
--LINUX target-----         fi
--LINUX target-----
--LINUX target-----         对应规则宏替换后的执行命令
--LINUX target-----        
--LINUX target-----         第1条命令,检查是否配置了CONFIG_INITRAMFS_SOURCE,若有配置,进入LINUX创建文件。从命令结果看,是没有执行的
--LINUX target-----        . linux/.config; if [ "$CONFIG_INITRAMFS_SOURCE" != "" ]; then \
--LINUX target-----            ( \
--LINUX target-----         cd linux ; \
--LINUX target-----         mkdir -p `dirname $CONFIG_INITRAMFS_SOURCE`; \
--LINUX target-----         touch $CONFIG_INITRAMFS_SOURCE || exit 1; \
--LINUX target-----            ) \
--LINUX target-----        fi
--LINUX target-----        第2条命令检查LINUX的版本,因为是4.4的内核,不需要执行make dep
--LINUX target-----        if expr "linux" : 'linux-2\.[0-4].*' > /dev/null && \
--LINUX target-----           [ ! -f linux/.depend ] ; then \
--LINUX target-----         echo "ERROR: you need to do a 'make dep' first" ; \
--LINUX target-----         exit 1 ; \
--LINUX target-----        fi
--LINUX target-----        第3条命令,进入LINUX目录,创建zImage 目标
--LINUX target-----        make ARCH=arm CROSS_COMPILE=arm-uclinuxeabi- CFLAGS_KERNEL="" AFLAGS_KERNEL="" EXTRA_MODULE_DIRS="" -j1 -C linux zImage || exit 1
--LINUX target-----            
--LINUX target-----           make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/linux'
--LINUX target----- 
--LINUX target-----         %  outputmakefile->scripts_basic->include/config/auto.conf->include/config/kernel.release->
--LINUX target-----         %                             
--LINUX target-----         %
--LINUX target-----         %Makefile:576: update target 'include/config/auto.conf' due to: .config include/config/auto.conf.cmd
--LINUX target-----         %
--LINUX target-----         %//include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
--LINUX target-----        %   //$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
--LINUX target-----        %
--LINUX target-----         %     执行命令
--LINUX target-----         %     make -f ./Makefile silentoldconfig
--LINUX target-----         %    
--LINUX target-----         %     因为Makefile:534: update target 'silentoldconfig' due to: scripts_basic outputmakefile FORCE                 
--LINUX target-----         %     //%config: scripts_basic outputmakefile FORCE
--LINUX target-----         %     //  $(Q)$(MAKE) $(build)=scripts/kconfig $@
--LINUX target-----         %  
--LINUX target-----        %        
--LINUX target-----         %          因此需要创建scripts_baseic
--LINUX target-----         %       
--LINUX target-----         %          Makefile:442: target 'scripts_basic' does not exist
--LINUX target-----         %          //# makefile (from 'scripts/Kbuild.include', line 175)
--LINUX target-----         %          //  build := -f ./scripts/Makefile.build obj
--LINUX target-----         %           //# Basic helpers built in scripts/                    
--LINUX target-----         %          //PHONY += scripts_basic
--LINUX target-----         %          //scripts_basic:                   
--LINUX target-----         %           //$(Q)$(MAKE) $(build)=scripts/basic
--LINUX target-----         %           //$(Q)rm -f .tmp_quiet_recordmcount
--LINUX target-----         %           
--LINUX target-----         %          make -f ./scripts/Makefile.build obj=scripts/basic                        
--LINUX target-----         %          rm -f .tmp_quiet_recordmcount
--LINUX target-----         %  
--LINUX target-----         %  处理完依赖关系后,处理silentoldconfig
--LINUX target-----         %  scripts/kconfig/Makefile:37: update target 'silentoldconfig' due to: scripts/kconfig/conf             
--LINUX target-----         %  make -f ./scripts/Makefile.build obj=scripts/kconfig silentoldconfig
--LINUX target-----         %  因为silentoldconfig 依赖conf
--LINUX target-----         %    silentoldconfig: $(obj)/conf
--LINUX target-----        %        $(Q)mkdir -p include/config include/generated
--LINUX target-----        %        $< $(silent) --$@ $(Kconfig)
--LINUX target-----        %     
--LINUX target-----         %      先处理scripts/kconfig/conf
--LINUX target-----         %      mkdir -p include/config include/generated
--LINUX target-----         %      scripts/kconfig/conf  --silentoldconfig Kconfig
--LINUX target-----         %
--LINUX target-----         %开始执行include/config/kernel.release的命令.这里反映出之前为什么先要处理auto.conf
--LINUX target-----         %
--LINUX target-----         %Makefile:954: update target 'include/config/kernel.release' due to: include/config/auto.conf FORCE
--LINUX target-----         %include/config/kernel.release: include/config/auto.conf FORCE
--LINUX target-----         %          $(call filechk,kernel.release)
--LINUX target-----         % 在# makefile (from 'scripts/Kbuild.include', line 54)定义了
--LINUX target-----         %    filechk =  $(Q)set -e; $(kecho) '  CHK     $@'; mkdir -p $(dir $@); $(filechk_$(1)) < $< > [email protected]; if [ -r $@ ] && cmp -s $@ [email protected]; then rm -f [email protected]; else $(kecho) '  UPD     $@'; mv -f [email protected] $@; fi
--LINUX target-----         %莶问齥ernel.release,
--LINUX target-----         %    set -e; : '  CHK     include/config/kernel.release'; mkdir -p include/config/;  echo "4.4.0-uc0$(/bin/bash ./scripts/setlocalversion .)" < include/config/auto.conf > include/config/kernel.release.tmp; if [ -r include/config/kernel.release ] && cmp -s include/config/kernel.release include/config/kernel.release.tmp; then rm -f include/config/kernel.release.tmp; else : '  UPD     include/config/kernel.release'; mv -f include/config/kernel.release.tmp include/config/kernel.release; fi
--LINUX target----- 
--LINUX target-----       +2)Makefile:462: target 'asm-generic' does not exist
--LINUX target-----       +asm-generic:
--LINUX target-----       +$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-generic \
--LINUX target-----       +            src=asm obj=arch/$(SRCARCH)/include/generated/asm
--LINUX target-----       +$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-generic \
--LINUX target-----       +           src=uapi/asm obj=arch/$(SRCARCH)/include/generated/uapi/asm
--LINUX target-----       +
--LINUX target-----       + 根据arm/include/asm/kbuild中的内容,将linux/include/asm-generic目录中相关的头文件,以新生成头文件的方式inlucde
--LINUX target-----       + make -f ./scripts/Makefile.asm-generic \
--LINUX target-----       +       src=asm obj=arch/arm/include/generated/asm
--LINUX target-----       + 
--LINUX target-----       + 同上,根据arm/include/uapi/asm/kbuild中的内容,将linux/include/uapi/asm-generic目录中相关的头文件,以新生成头文件的方式inlucde       
--LINUX target-----       + make -f ./scripts/Makefile.asm-generic \
--LINUX target-----       +           src=uapi/asm obj=arch/arm/include/generated/uapi/asm
--LINUX target-----       +
--LINUX target----- 
--LINUX target-----      生成include/generated/uapi/linux/version.h
--LINUX target-----     _ 3)Makefile:1016: update target 'include/generated/uapi/linux/version.h' due to: Makefile FORCE
--LINUX target-----     _ 
--LINUX target-----     _ define filechk_version.h
--LINUX target-----     _  (echo \#define LINUX_VERSION_CODE $(shell                         \
--LINUX target-----     _  expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \
--LINUX target-----     _  echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
--LINUX target-----     _ endef
--LINUX target-----     _ $(version_h): $(srctree)/Makefile FORCE
--LINUX target-----     _    $(call filechk,version.h)
--LINUX target-----     _    $(Q)rm -f $(old_version_h)
--LINUX target----- 
--LINUX target-----  
--LINUX target-----     *生成 include/generated/utsrelease.h
--LINUX target-----     * 4)Makefile:1020: update target 'include/generated/utsrelease.h' due to: include/config/kernel.release FORCE
--LINUX target-----     * include/generated/utsrelease.h: include/config/kernel.release FORCE
--LINUX target-----    *     $(call filechk,utsrelease.h)
--LINUX target-----
--LINUX target----- 
--LINUX target-----     +   prepare3目标用于检查是否不再LINUX源代码目录下make.这里不存在这个问题,因此没有实质的处理
--LINUX target-----     +   prepare3: include/config/kernel.release  依赖关系前面已经处理了。
--LINUX target-----     +   prepare2: prepare3 outputmakefile asm-generic    前面已经处理了
--LINUX target-----     +   prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
--LINUX target-----     +                    include/config/auto.conf
--LINUX target-----     +           $(cmd_crmodverdir)             
--LINUX target-----      export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions    
--LINUX target-----          创建 .tmp_versions 目录。后面编译过程中用于保存了与mod相关的文件    
--LINUX target-----         5)Makefile:984: update target 'prepare1' due to: prepare2 include/generated/uapi/linux/version.h include/generated/utsrelease.h include/config/auto.conf
--LINUX target-----         mkdir -p .tmp_versions
--LINUX target-----      
--LINUX target-----     怎么又会执行这个目标了。为什么要重复执行呢。不清楚,也许工程文件写的不好吧。
--LINUX target-----     有空的时候,检查每次产生的文件时一样的吗。来确定是否是make文件的原因吧    
--LINUX target-----     在下面紧接的地方,因为依赖关系里有scripts_basic,而且scripts_basic的处理规则是FORCE类型的因此会重复执行
--LINUX target-----     其实就是生成fixdep
--LINUX target-----      6)Makefile:442: target 'scripts_basic' does not exist
--LINUX target-----      scripts_basic:
--LINUX target-----       $(Q)$(MAKE) $(build)=scripts/basic
--LINUX target-----       $(Q)rm -f .tmp_quiet_recordmcount
--LINUX target-----
--LINUX target----- 
--LINUX target-----     PHONY += archheaders
--LINUX target-----        archheaders:
--LINUX target-----     PHONY += archscripts
--LINUX target-----        archscripts:
--LINUX target-----     因此这两个目标也没有任何执行  
--LINUX target-----  
--LINUX target-----      7)arch/arm/Makefile:314: update target 'archprepare' due to: archheaders archscripts prepare1 scripts_basic
--LINUX target-----      archprepare:
--LINUX target-----         $(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h
--LINUX target-----       make -f ./scripts/Makefile.build obj=arch/arm/tools include/generated/mach-types.h
--LINUX target-----     
--LINUX target-----     
--LINUX target-----      根据arch/arm/tools目录里的文件生成inlude /generated/mach-types.h
--LINUX target-----      8)  arch/arm/tools/Makefile:8: update target 'include/generated/mach-types.h' due to: arch/arm/tools/gen-mach-types arch/arm/tools/mach-types
--LINUX target-----      include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
--LINUX target-----       @$(kecho) '  Generating $@'
--LINUX target-----       @mkdir -p $(dir $@)
--LINUX target-----       $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
--LINUX target-----       
--LINUX target-----
--LINUX target-----      9)Makefile:989: update target 'prepare0' due to: archprepare FORCE
--LINUX target-----      archprepare: archheaders archscripts prepare1 scripts_basic
--LINUX target-----
--LINUX target-----      prepare0: archprepare FORCE
--LINUX target-----       $(Q)$(MAKE) $(build)=.
--LINUX target-----
--LINUX target-----        这里主要根据kbuild生成kernel/bounds.s
--LINUX target-----        make -f ./scripts/Makefile.build obj=.
--LINUX target-----            参见根目录KBUILD文件中的注释,可以理解,但不清楚Makefile如何将Kbuild文件包含捡来的
--LINUX target-----            在scripts/Makefile.build44行include $(kbuild-file),这个里面定义了需要处理的内容
--LINUX target-----            include/generated/bounds.h include/generated/timeconst.h arch/arm/kernel/asm-offsets.s missing-syscalls
--LINUX target----- 
--LINUX target----- 
--LINUX target-----      前面到prepare已经处理完成了
--LINUX target-----        应该是makefile 1119: modules_prepare: prepare scripts
--LINUX target-----     
--LINUX target-----      10)Makefile:548: update target 'scripts' due to: scripts_basic include/config/auto.conf include/config/tristate.conf asm-generic
--LINUX target-----      scripts: scripts_basic include/config/auto.conf include/config/tristate.conf \
--LINUX target-----        asm-generic
--LINUX target-----       $(Q)$(MAKE) $(build)=$(@)
--LINUX target-----
--LINUX target-----        scripts/Makefile.build:403: target 'scripts/mod' does not exist
--LINUX target-----             make -f ./scripts/Makefile.build obj=scripts/mod
--LINUX target-----     
--LINUX target-----     
--LINUX target-----     因为这里的依赖关系,先处理额scripts
--LINUX target-----     到此,相关的依赖关系及准备工作已经完成,依次处理vmlinux-dirs目录
--LINUX target-----     vmlinux-dirs := init usr arch/arm/kernel arch/arm/mm arch/arm/common
--LINUX target-----                     arch/arm/probes arch/arm/net arch/arm/crypto arch/arm/firmware
--LINUX target-----                     kernel certs mm fs ipc security crypto block drivers sound firmware net arch/arm/lib lib virt
--LINUX target-----     11)Makefile:946: update target 'init' due to: prepare scripts
--LINUX target-----     $(vmlinux-dirs): prepare scripts
--LINUX target-----       $(Q)$(MAKE) $(build)=$@
--LINUX target-----        make -f ./scripts/Makefile.build obj=init
--LINUX target-----        
--LINUX target-----         经过这个处理,在每个init usr arch/arm/kernel arch/arm/mm arch/arm/common
--LINUX target-----                     arch/arm/probes arch/arm/net arch/arm/crypto arch/arm/firmware
--LINUX target-----                     kernel certs mm fs ipc security crypto block drivers sound firmware net arch/arm/lib lib virt
--LINUX target-----               目录下,生成了built-in.o     
--LINUX target-----
--LINUX target----- 13) Makefile:932: update target 'vmlinux' due to: scripts/link-vmlinux.sh arch/arm/kernel/vmlinux.lds arch/arm/kernel/head-nommu.o init/built-in.o usr/built-in.o arch/arm/nwfpe/built-in.o arch/arm/vfp/built-in.o arch/arm/kernel/built-in.o arch/arm/mm/built-in.o arch/arm/common/built-in.o arch/arm/probes/built-in.o arch/arm/net/built-in.o arch/arm/crypto/built-in.o arch/arm/firmware/built-in.o arch/arm/mach-versatile/built-in.o arch/arm/plat-versatile/built-in.o kernel/built-in.o certs/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o arch/arm/lib/lib.a lib/lib.a arch/arm/lib/built-in.o lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o net/built-in.o virt/built-in.o FORCE
--LINUX target-----        vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE
--LINUX target-----           //这是没有执行的
--LINUX target-----          ifdef CONFIG_HEADERS_CHECK
--LINUX target-----           $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
--LINUX target-----          endif
--LINUX target-----          //这是没有执行的
--LINUX target-----          ifdef CONFIG_SAMPLES
--LINUX target-----           $(Q)$(MAKE) $(build)=samples
--LINUX target-----          endif
--LINUX target-----          //这是没有执行的
--LINUX target-----          ifdef CONFIG_BUILD_DOCSRC
--LINUX target-----           $(Q)$(MAKE) $(build)=Documentation
--LINUX target-----          endif
--LINUX target-----          //这是没有执行的
--LINUX target-----          ifdef CONFIG_GDB_SCRIPTS
--LINUX target-----           $(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py
--LINUX target-----          endif
--LINUX target-----           +$(call if_changed,link-vmlinux)
--LINUX target----- 
--LINUX target-----       cmd_link-vmlinux = $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux)
--LINUX target-----      # makefile (from 'scripts/Kbuild.include', line 251)
--LINUX target-----if_changed = $(if $(strip $(any-prereq) $(arg-check)), @set -e; $(echo-cmd) $(cmd_$(1)); printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd)
--LINUX target-----
--LINUX target-----# makefile (from '.vmlinux.cmd', line 1)
--LINUX target-----cmd_vmlinux := /bin/bash scripts/link-vmlinux.sh arm-uclinuxeabi-ld -EL  -p --no-undefined -X --pic-veneer
--LINUX target-----
--LINUX target-----这里执行的都是 /bin/bash scripts/link-vmlinux.sh里的内容
--LINUX target-----#!/bin/sh
--LINUX target-----#
--LINUX target-----# link vmlinux
--LINUX target-----#
--LINUX target-----# vmlinux is linked from the objects selected by $(KBUILD_VMLINUX_INIT) and
--LINUX target-----# $(KBUILD_VMLINUX_MAIN). Most are built-in.o files from top-level directories
--LINUX target-----# in the kernel tree, others are specified in arch/$(ARCH)/Makefile.
--LINUX target-----# Ordering when linking is important, and $(KBUILD_VMLINUX_INIT) must be first.
--LINUX target-----#
--LINUX target-----# vmlinux
--LINUX target-----#   ^
--LINUX target-----#   |
--LINUX target-----#   +-< $(KBUILD_VMLINUX_INIT)
--LINUX target-----#   |   +--< init/version.o + more
--LINUX target-----#   |
--LINUX target-----#   +--< $(KBUILD_VMLINUX_MAIN)
--LINUX target-----#   |    +--< drivers/built-in.o mm/built-in.o + more
--LINUX target-----#   |
--LINUX target-----#   +-< ${kallsymso} (see description in KALLSYMS section)
--LINUX target-----#
--LINUX target-----# vmlinux version (uname -v) cannot be updated during normal
--LINUX target-----# descending-into-subdirs phase since we do not yet know if we need to
--LINUX target-----# update vmlinux.
--LINUX target-----# Therefore this step is delayed until just before final link of vmlinux.
--LINUX target-----#
--LINUX target-----# System.map is generated to document addresses of all kernel symbols
--LINUX target-----
--LINUX target-----*  set -e;  echo '  /bin/bash scripts/link-vmlinux.sh arm-uclinuxeabi-ld -EL  -p --no-undefined -X --pic-veneer '; /bin/bash scripts/link-vmlinux.sh arm-uclinuxeabi-ld -EL  -p --no-undefined -X --pic-veneer ; printf '%s\n' 'cmd_vmlinux := /bin/bash scripts/link-vmlinux.sh arm-uclinuxeabi-ld -EL  -p --no-undefined -X --pic-veneer ' > ./.vmlinux.cmd
--LINUX target-----
--LINUX target-----*    /bin/bash scripts/link-vmlinux.sh arm-uclinuxeabi-ld -EL  -p --no-undefined -X --pic-veneer
--LINUX target-----*    LD      vmlinux.o
--LINUX target-----第1步:这里通过modpost_link()生成了vmlinux.o
--LINUX target-----
--LINUX target-----第2步:
--LINUX target-----# modpost vmlinux.o to check for section mismatches
--LINUX target-----${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o
--LINUX target-----*  scripts/Makefile.modpost:97: update target 'vmlinux.o' due to: FORCE
--LINUX target-----
--LINUX target-----*  echo '  scripts/mod/modpost   -o ./Module.symvers    -S   vmlinux.o'; scripts/mod/modpost   -o ./Module.symvers    -S   vmlinux.o
--LINUX target-----*    scripts/mod/modpost   -o ./Module.symvers    -S   vmlinux.o
--LINUX target-----第2步:
--LINUX target-----*    GEN     .version
--LINUX target-----
--LINUX target-----第4步:
--LINUX target-----# final build of init/
--LINUX target-----${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init
--LINUX target-----  这里重新生成了 init/built-in.o
--LINUX target----- 
--LINUX target-----第5步:kallsyms support
--LINUX target-----*  :
--LINUX target-----*    KSYM    .tmp_kallsyms1.o
--LINUX target-----*    KSYM    .tmp_kallsyms2.o
--LINUX target-----第6步:
--LINUX target-----vmlinux_link "${kallsymso}" vmlinux
--LINUX target-----*    LD      vmlinux
--LINUX target-----
--LINUX target-----第7步:
--LINUX target-----*    SYSMAP  System.map
--LINUX target----- $(obj)/Image: vmlinux FORCE
--LINUX target----- $(call if_changed,objcopy)
--LINUX target----- @$(kecho) '  Kernel: $@ is ready'
--LINUX target-----
--LINUX target-----$(obj)/compressed/vmlinux: $(obj)/Image FORCE
--LINUX target----- $(Q)$(MAKE) $(build)=$(obj)/compressed $@
--LINUX target-----
--LINUX target-----$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
--LINUX target----- $(call if_changed,objcopy)
--LINUX target----- @$(kecho) '  Kernel: $@ is ready'
--LINUX target----- 注意,这里的目标,是来自ARCH目录下的。因此先生成Image---> zImage -->arch/arm/boot/compressed/vmlinux
--LINUX target----- 为什么要先生成zImage呢,应该先生成compressed/vmlinux
--LINUX target-----arch/arm/Makefile:328: update target 'Image' due to: vmlinux
--LINUX target-----make -f ./scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-versatile/ arch/arm/boot/Image
--LINUX target-----arch/arm/boot/Makefile:48: update target 'arch/arm/boot/Image' due to: vmlinux FORCE
--LINUX target-----set -e;  echo '  arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image'; arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image; printf '%s\n' 'cmd_arch/arm/boot/Image := arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image' > arch/arm/boot/.Image.cmd
--LINUX target-----  arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image
--LINUX target-----: '  Kernel: arch/arm/boot/Image is ready'
--LINUX target-----arch/arm/Makefile:328: update target 'zImage' due to: vmlinux Image
--LINUX target-----make -f ./scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-versatile/ arch/arm/boot/zImage
--LINUX target-----arch/arm/boot/Makefile:48: update target 'arch/arm/boot/Image' due to: FORCE
--LINUX target-----: '  Kernel: arch/arm/boot/Image is ready'
--LINUX target-----arch/arm/boot/Makefile:52: update target 'arch/arm/boot/compressed/vmlinux' due to: arch/arm/boot/Image FORCE
--LINUX target-----make -f ./scripts/Makefile.build obj=arch/arm/boot/compressed arch/arm/boot/compressed/vmlinux
--LINUX target-----
--LINUX target-----bad_syms=$(arm-uclinuxeabi-nm arch/arm/boot/compressed/vmlinux | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && [ -z "$bad_syms" ] || ( echo "following symbols must have non local/private scope:" >&2; echo "$bad_syms" >&2; rm -f arch/arm/boot/compressed/vmlinux; false )
--LINUX target-----arch/arm/boot/Makefile:55: update target 'arch/arm/boot/zImage' due to: arch/arm/boot/compressed/vmlinux FORCE
--LINUX target-----set -e;  echo '  arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage'; arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage; printf '%s\n' 'cmd_arch/arm/boot/zImage := arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage' > arch/arm/boot/.zImage.cmd
--LINUX target-----  arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage
--LINUX target-----: '  Kernel: arch/arm/boot/zImage is ready'
--LINUX target-----make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/linux'
--LINUX target-----
--LINUX target-----    
--LINUX target-----到这里,完成subdir依赖关系里的第1个linux内核的处理,接下来处理第2个依赖关系
--LINUX target-----
--LINUX target-----
--LINUX target----- 
--LINUX target-----这里仍然执行的是
--LINUX target-----.PHONY: linux
--LINUX target-----linux:
--LINUX target-----   目标的第4条规则 ,安装headers_install
--LINUX target-----  if ! expr "linux" : 'linux-2.[01234].*' > /dev/null ; then \
--LINUX target-----   : ignore failure in headers_install; \
--LINUX target-----   make ARCH=arm CROSS_COMPILE=arm-uclinuxeabi- CFLAGS_KERNEL="" AFLAGS_KERNEL="" EXTRA_MODULE_DIRS="" -j1 -C linux headers_install || true; \
--LINUX target-----  fi
--LINUX target-----  __headers: $(version_h) scripts_basic asm-generic archheaders archscripts FORCE
--LINUX target-----     $(Q)$(MAKE) $(build)=scripts build_unifdef
--LINUX target-----
--LINUX target-----  headers_install: __headers
--LINUX target-----   $(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/uapi/asm/Kbuild),, \
--LINUX target-----     $(error Headers not exportable for the $(SRCARCH) architecture))
--LINUX target-----   $(Q)$(MAKE) $(hdr-inst)=include/uapi
--LINUX target-----   $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst)
--LINUX target-----
--LINUX target-----
--LINUX target-----  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/linux'
--LINUX target-----    先处理__headers
--LINUX target-----      处理第1个依赖    version.h
--LINUX target-----      Makefile:1016: update target 'include/generated/uapi/linux/version.h' due to: FORCE
--LINUX target-----          $(version_h): $(srctree)/Makefile FORCE
--LINUX target-----           $(call filechk,version.h)
--LINUX target-----           $(Q)rm -f $(old_version_h)
--LINUX target-----     处理第2个依赖scripts_basic
--LINUX target-----     处理第3个依赖asm-generic
--LINUX target-----     后面两个依赖规则为空,不执行
--LINUX target-----   Makefile:1054: update target '__headers' due to: include/generated/uapi/linux/version.h scripts_basic asm-generic archheaders archscripts FORCE
--LINUX target-----  
--LINUX target-----   在处理headers_install
--LINUX target-----  Makefile:1062: update target 'headers_install' due to: __headers
--LINUX target-----  
--LINUX target-----   $(Q)$(MAKE) $(hdr-inst)=include/uapi根据其kbuild,相关目录的头文件安装
--LINUX target-----  # UAPI Header export list
--LINUX target-----# Top-level Makefile calls into asm-$(ARCH)
--LINUX target-----# List only non-arch directories below
--LINUX target-----
--LINUX target-----header-y += asm-generic/
--LINUX target-----header-y += linux/
--LINUX target-----header-y += sound/
--LINUX target-----header-y += mtd/
--LINUX target-----header-y += rdma/
--LINUX target-----header-y += video/
--LINUX target-----header-y += drm/
--LINUX target-----header-y += xen/
--LINUX target-----header-y += scsi/
--LINUX target-----header-y += misc/
--LINUX target----- 
--LINUX target-----  
--LINUX target----- 
--LINUX target-----  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/linux'
--LINUX target----- 
--LINUX target-----  if [ -f linux/vmlinux ]; then \
--LINUX target-----   ln -f linux/vmlinux linux/linux ; \
--LINUX target-----  fi
--LINUX target----- 
--LINUX target----- 
--LINUX target----- 到此,subdirs第1个依赖关系linux处理完成
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
--modules target---  PHONY += modules_prepare
--modules target---  modules_prepare: prepare scripts
--modules target--- 
--modules target--- 
--modules target---  //.PHONY: modules
--modules target---  //modules: generated_headers
--modules target---  // . $(LINUXDIR)/.config; if [ "$$CONFIG_MODULES" = "y" ]; then \
--modules target---  //  [ -d $(LINUXDIR)/modules ] || mkdir $(LINUXDIR)/modules; \
--modules target---  //  $(MAKEARCH_KERNEL) -j$(HOST_NCPU) -C $(LINUXDIR) modules || exit 1; \
--modules target--- 
--modules target--- 
--modules target---    . $(LINUXDIR)/.config; if [ "$$CONFIG_MODULES" = "y" ]; then \
--modules target---    [ -d $(LINUXDIR)/modules ] || mkdir $(LINUXDIR)/modules; \
--modules target---    $(MAKEARCH_KERNEL) -j$(HOST_NCPU) -C $(LINUXDIR) modules || exit 1; \
--modules target---   fi
--modules target---   
--modules target---    Makefile:111: target 'generated_headers' does not exist
--modules target---    if [ ! -f linux/include/linux/autoconf.h ] ; then \
--modules target---     ln -sf /home/dx/uclinux/uClinux-dist/linux/include/generated/autoconf.h linux/include/linux/autoconf.h ; \
--modules target---   fi
--modules target--- 
--modules target--- 
--modules target---   处理完modules的依赖目标  generated_headers
--modules target---  
--modules target---    Makefile:117: update target 'modules' due to: generated_headers
--modules target---     . linux/.config; if [ "$CONFIG_MODULES" = "y" ]; then \
--modules target---     [ -d linux/modules ] || mkdir linux/modules; \
--modules target---     make ARCH=arm CROSS_COMPILE=arm-uclinuxeabi- CFLAGS_KERNEL="" AFLAGS_KERNEL="" EXTRA_MODULE_DIRS="" -j1 -C linux modules || exit 1; \
--modules target---    fi
--modules target---    make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/linux'
--modules target--- 
--modules target---  这里的处理步骤很类似处理LINUX的过程 
--modules target---  //vmlinux-dirs := init usr arch/arm/nwfpe arch/arm/vfp arch/arm/kernel
--modules target---                 arch/arm/mm arch/arm/common arch/arm/probes arch/arm/net
--modules target---                 arch/arm/crypto arch/arm/firmware arch/arm/mach-versatile
--modules target---                 arch/arm/plat-versatile kernel certs mm fs ipc security crypto block drivers sound firmware net arch/arm/lib lib virt
--modules target---  //modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
--modules target---   //$(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin
--modules target---   
--modules target---  //%/modules.builtin: include/config/auto.conf
--modules target---  //#  recipe to execute (from 'Makefile', line 1114):
--modules target---   //$(Q)$(MAKE) $(modbuiltin)=$* 
--modules target---                 
--modules target---  //  PHONY += modules
--modules target---  //modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
--modules target---   //$(Q)$(AWK) '!x[$$0]++' $(vmlinux-only-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
--modules target---   //@$(kecho) '  Building modules, stage 2.';
--modules target---   //$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
--modules target---   //$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
--modules target---   
--modules target---   
--modules target---     处理prepare0 ->archprepare -> prepare1 -> prepare2 ->include/generated/uapi/linux/version.h include/generated/utsrelease.h include/config/auto.conf
--modules target---    这下面为什么还要执行呢,在处理每个目录目标时,都依赖了prepare scripts .
--modules target---    而这些依赖关系里有些是FORCE规定的,因此会再次执行。
--modules target---    因为处理linux目标时,只定义了KBUILD_BUILTIN,
--modules target---    而处理modules目标时,定义的是KBUILD_MODULES,
--modules target---    因此相应的依赖关系,还是有必要进行处理。只是那些依赖关系一定要处理,这个就是LINUX系统开发者确定的
--modules target---    有空,可以比较两个阶段这些处理是否有不同。
--modules target---    比如后面处理scripts_basic目录时,就因为是处理modules,增加了scripts/basic/modules.order依赖关系
--modules target---   
--modules target---   
--modules target---                  Makefile:954: update target 'include/config/kernel.release' due to: FORCE
--modules target---                  Makefile:1016: update target 'include/generated/uapi/linux/version.h' due to: FORCE
--modules target---                  Makefile:1020: update target 'include/generated/utsrelease.h' due to: FORCE
--modules target---                  Makefile:984: update target 'prepare1' due to: prepare2 include/generated/uapi/linux/version.h include/generated/utsrelease.h include/config/auto.conf
--modules target---                  Makefile:442: target 'scripts_basic' does not exist
--modules target---                  scripts/Makefile.build:353: update target 'scripts/basic/modules.order' due to: FORCE
--modules target---                  scripts/Makefile.host:91: update target 'scripts/basic/fixdep' due to: FORCE
--modules target---                  scripts/Makefile.build:97: update target '__build' due to: scripts/basic/modules.order scripts/basic/fixdep
--modules target---                  arch/arm/Makefile:314: update target 'archprepare' due to: archheaders archscripts prepare1 scripts_basic
--modules target---                  Makefile:989: update target 'prepare0' due to: archprepare FORCE
--modules target---                  scripts/Makefile.build:353: update target 'modules.order' due to: FORCE
--modules target---                  Makefile:548: update target 'scripts' due to: scripts_basic include/config/auto.conf include/config/tristate.conf asm-generic
--modules target---                  scripts/Makefile.build:403: target 'scripts/mod' does not exist
--modules target---                  scripts/Makefile.build:353: update target 'scripts/mod/modules.order' due to: FORCE
--modules target---                  scripts/Makefile.build:353: update target 'scripts/modules.order' due to: scripts/mod FORCE
--modules target---                  scripts/Makefile.host:91: update target 'scripts/kallsyms' due to: FORCE
--modules target---                  scripts/Makefile.host:91: update target 'scripts/conmakehash' due to: FORCE
--modules target---                 
--modules target---                 
--modules target---                   这里完成prepare scripts依赖关系的处理
--modules target---                   接下来处理modules的关系。按照目录顺序处理moudles.order
--modules target---                  
--modules target---                  Makefile:946: update target 'init' due to: prepare scripts
--modules target---                   Makefile:946: update target 'usr' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/nwfpe' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/vfp' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/kernel' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/mm' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/common' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/probes' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/net' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/crypto' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/firmware' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/mach-versatile' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/plat-versatile' due to: prepare scripts
--modules target---                  Makefile:946: update target 'kernel' due to: prepare scripts
--modules target---                  Makefile:946: update target 'certs' due to: prepare scripts
--modules target---                  Makefile:946: update target 'mm' due to: prepare scripts
--modules target---                  Makefile:946: update target 'fs' due to: prepare scripts
--modules target---                  Makefile:946: update target 'block' due to: prepare scripts
--modules target---                  Makefile:946: update target 'drivers' due to: prepare scripts
--modules target---                  Makefile:946: update target 'sound' due to: prepare scripts
--modules target---                  Makefile:946: update target 'firmware' due to: prepare scripts
--modules target---                  Makefile:946: update target 'net' due to: prepare scripts
--modules target---                  Makefile:946: update target 'arch/arm/lib' due to: prepare scripts
--modules target---                  Makefile:946: update target 'lib' due to: prepare scripts
--modules target---                  Makefile:946: update target 'virt' due to: prepare scripts
--modules target---                  make -f ./scripts/Makefile.build obj=virt
--modules target---               
--modules target---               
--modules target---                 //vmlinux-dirs := init usr arch/arm/nwfpe arch/arm/vfp arch/arm/kernel
--modules target---                               arch/arm/mm arch/arm/common arch/arm/probes arch/arm/net
--modules target---                               arch/arm/crypto arch/arm/firmware arch/arm/mach-versatile
--modules target---                               arch/arm/plat-versatile kernel certs mm fs ipc security crypto block drivers sound firmware net arch/arm/lib lib virt
--modules target---                 
--modules target---                  modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
--modules target---                 $(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin
--modules target---               
--modules target---                  %/modules.builtin: include/config/auto.conf
--modules target---                   $(Q)$(MAKE) $(modbuiltin)=$*
--modules target---                 
--modules target---                  %/modules.builtin: include/config/auto.conf
--modules target---                       $(Q)$(MAKE) $(modbuiltin)=$*
--modules target---               
--modules target---                  这里接下来处理modules的关系里的modules.builtin。
--modules target---                  按照目录顺序处理moudles.builtin
--modules target---                  
--modules target---                  Makefile:1114: update target 'init/modules.builtin' due to: include/config/auto.conf 
--modules target---                  Makefile:1114: update target 'usr/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/nwfpe/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/vfp/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/kernel/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/mm/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/common/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/probes/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/net/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/crypto/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/firmware/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/mach-versatile/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/plat-versatile/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'kernel/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'certs/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'mm/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'fs/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'ipc/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'security/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'crypto/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'block/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'drivers/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'sound/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'firmware/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'net/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'arch/arm/lib/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'lib/modules.builtin' due to: include/config/auto.conf
--modules target---                  Makefile:1114: update target 'virt/modules.builtin' due to: include/config/auto.conf
--modules target---                 
--modules target---                 执行modules.builtin 的处理规则
--modules target---                   Makefile:1111: update target 'modules.builtin' due to: init/modules.builtin usr/modules.builtin arch/arm/nwfpe/modules.builtin arch/arm/vfp/modules.builtin arch/arm/kernel/modules.builtin arch/arm/mm/modules.builtin arch/arm/common/modules.builtin arch/arm/probes/modules.builtin arch/arm/net/modules.builtin arch/arm/crypto/modules.builtin arch/arm/firmware/modules.builtin arch/arm/mach-versatile/modules.builtin arch/arm/plat-versatile/modules.builtin kernel/modules.builtin certs/modules.builtin mm/modules.builtin fs/modules.builtin ipc/modules.builtin security/modules.builtin crypto/modules.builtin block/modules.builtin drivers/modules.builtin sound/modules.builtin firmware/modules.builtin net/modules.builtin arch/arm/lib/modules.builtin lib/modules.builtin virt/modules.builtin
--modules target---   
--modules target---                   awk '!x[$0]++' init/modules.builtin usr/modules.builtin arch/arm/nwfpe/modules.builtin arch/arm/vfp/modules.builtin arch/arm/kernel/modules.builtin arch/arm/mm/modules.builtin arch/arm/common/modules.builtin arch/arm/probes/modules.builtin arch/arm/net/modules.builtin arch/arm/crypto/modules.builtin arch/arm/firmware/modules.builtin arch/arm/mach-versatile/modules.builtin arch/arm/plat-versatile/modules.builtin kernel/modules.builtin certs/modules.builtin mm/modules.builtin fs/modules.builtin ipc/modules.builtin security/modules.builtin crypto/modules.builtin block/modules.builtin drivers/modules.builtin sound/modules.builtin firmware/modules.builtin net/modules.builtin arch/arm/lib/modules.builtin lib/modules.builtin virt/modules.builtin > ./modules.builtin
--modules target---     这里才开始真正处理modules里定义的规则  
--modules target---     Makefile:1105: update target 'modules' due to: init usr arch/arm/nwfpe arch/arm/vfp arch/arm/kernel arch/arm/mm arch/arm/common arch/arm/probes arch/arm/net arch/arm/crypto arch/arm/firmware arch/arm/mach-versatile arch/arm/plat-versatile kernel certs mm fs ipc security crypto block drivers sound firmware net arch/arm/lib lib virt modules.builtin
--modules target---      modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
--modules target---       $(Q)$(AWK) '!x[$$0]++' $(vmlinux-only-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
--modules target---       @$(kecho) '  Building modules, stage 2.';
--modules target---       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
--modules target---       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
--modules target---       
--modules target---    awk '!x[$0]++' ./init/modules.order ./usr/modules.order ./arch/arm/nwfpe/modules.order ./arch/arm/vfp/modules.order ./arch/arm/kernel/modules.order ./arch/arm/mm/modules.order ./arch/arm/common/modules.order ./arch/arm/probes/modules.order ./arch/arm/net/modules.order ./arch/arm/crypto/modules.order ./arch/arm/firmware/modules.order ./arch/arm/mach-versatile/modules.order ./arch/arm/plat-versatile/modules.order ./kernel/modules.order ./certs/modules.order ./mm/modules.order ./fs/modules.order ./ipc/modules.order ./security/modules.order ./crypto/modules.order ./block/modules.order ./drivers/modules.order ./sound/modules.order ./firmware/modules.order ./net/modules.order ./arch/arm/lib/modules.order ./lib/modules.order ./virt/modules.order > ./modules.order
--modules target---    : '  Building modules, stage 2.';
--modules target---    make -f ./scripts/Makefile.modpost
--modules target---    make -f ./scripts/Makefile.fwinst obj=firmware __fw_modbuild
--modules target---   
--modules target---    make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/linux'
 
 
 
  Makefile:234: update target 'subdirs' due to: linux modules
  .PHONY: subdirs
    subdirs: linux modules
     for dir in $(DIRS) ; do [ ! -d $$dir ] || $(MAKEARCH) -C $$dir || exit 1 ; done
 
  for dir in  include lib include user ; do [ ! -d $dir ] || make ARCH=arm -C $dir || exit 1 ; done
 
--subdir-inlucde-  根据inlude 目录里的Makefile,处理符号链接
--subdir-inlucde-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/include'
--subdir-inlucde-  Makefile:70: target 'link' does not exist
--subdir-inlucde-  echo "Making symlinks in /home/dx/uclinux/uClinux-dist/staging/include"
--subdir-inlucde-  Making symlinks in /home/dx/uclinux/uClinux-dist/staging/include
--subdir-inlucde-  mkdir -p /home/dx/uclinux/uClinux-dist/staging/include
--subdir-inlucde-  for p in /home/dx/uclinux/uClinux-dist/linux/usr/include/*,. /home/dx/uclinux/uClinux-dist/linux/include/linux/autoconf.h,linux /home/dx/uclinux/uClinux-dist/autoconf.h,vendor /home/dx/uclinux/uClinux-dist/config,. /home/dx/uclinux/uClinux-dist/modules/autoconf.h,modules /home/dx/uclinux/uClinux-dist/modules/ocf/cryptodev.h,crypto /home/dx/uclinux/uClinux-dist/user/gdb/include/ansidecl.h,. /home/dx/uclinux/uClinux-dist/user/gdb/include/symcat.h,.; do \
--subdir-inlucde-   src=`expr "$p" : '\(.*\),.*'` ; \
--subdir-inlucde-   dst=/home/dx/uclinux/uClinux-dist/staging/include/`expr "$p" : '.*,\(.*\)'` ; \
--subdir-inlucde-   for i in $src; do \
--subdir-inlucde-    [ ! -e "$i" ] && continue; \
--subdir-inlucde-    [ "`basename $i`" = CVS ] && continue; \
--subdir-inlucde-    [ -L "$dst/`basename $i`" ] && continue; \
--subdir-inlucde-    [ -d $dst ] || mkdir $dst; \
--subdir-inlucde-    ln -s $i $dst/.; \
--subdir-inlucde-   done ; \
--subdir-inlucde-  done
--subdir-inlucde-  Makefile:86: target 'cpplink' does not exist
--subdir-inlucde-  echo "Making include/c++ symlink to compiler c++ includes"
--subdir-inlucde-  Making include/c++ symlink to compiler c++ includes
--subdir-inlucde-  rm -f /home/dx/uclinux/uClinux-dist/staging/include/c++
--subdir-inlucde-  ln -s /usr/local/include/g++-v3 /home/dx/uclinux/uClinux-dist/staging/include/c++
--subdir-inlucde-  GCCVER=`ucfront-gcc arm-uclinuxeabi-gcc  -dumpversion` ; \
--subdir-inlucde-   for i in `ucfront-g++ arm-uclinuxeabi-g++  -v -E -xc++ /dev/null 2>&1 | sed -e '/^Reading specs/,/^#include <\.\.\.>/d' -e '/End of search list/Q'`; do \
--subdir-inlucde-   if [ -f $i/new ]; then rm -f /home/dx/uclinux/uClinux-dist/staging/include/c++; ln -s $i /home/dx/uclinux/uClinux-dist/staging/include/c++; break; fi; \
--subdir-inlucde-   if [ -f $i/c++/$GCCVER/new ]; then rm -f /home/dx/uclinux/uClinux-dist/staging/include/c++; ln -s $i/c++/$GCCVER /home/dx/uclinux/uClinux-dist/staging/include/c++; break; fi; \
--subdir-inlucde-   done
--subdir-inlucde-  rm -f /home/dx/uclinux/uClinux-dist/staging/include/bits ; \
--subdir-inlucde-   GCCVER=`ucfront-gcc arm-uclinuxeabi-gcc  -dumpversion` ; \
--subdir-inlucde-   GCCMACH=`ucfront-gcc arm-uclinuxeabi-gcc  -dumpmachine` ; \
--subdir-inlucde-   GCCMULTI=`ucfront-gcc arm-uclinuxeabi-gcc  -print-multi-directory` ; \
--subdir-inlucde-   GCCPATH=`ucfront-gcc arm-uclinuxeabi-gcc  -print-libgcc-file-name | sed -e 's?/lib/gcc/.*$??g'` ; \
--subdir-inlucde-   GPLUSBITS="$GCCPATH/$GCCMACH/include/c++/$GCCVER/$GCCMACH/$GCCMULTI/bits $GCCPATH/include/c++/$GCCVER/$GCCMACH/$GCCMULTI/bits"; \
--subdir-inlucde-   echo "Checking for modern c++ bits..."; \
--subdir-inlucde-   for i in $GPLUSBITS; do \
--subdir-inlucde-    if [ -d $i ] ; then \
--subdir-inlucde-    echo "Using modern c++ bits, $i" ; \
--subdir-inlucde-    ln -s $i /home/dx/uclinux/uClinux-dist/staging/include/bits ; \
--subdir-inlucde-    break; \
--subdir-inlucde-    fi; \
--subdir-inlucde-   done
--subdir-inlucde-  Checking for modern c++ bits...
--subdir-inlucde-  Using modern c++ bits, /home/dx/tools/dx/usr/local/bin/../arm-uclinuxeabi/include/c++/5.4.0/arm-uclinuxeabi/./bits
--subdir-inlucde-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/include'
 
  处理lib目录,根据lib 目录里的MAKEFILE
 
  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/lib'
  DIRS_y = /home/dx/uclinux/uClinux-dist/prop libg uClibc
  all:
    $(MAKE) -j$(HOST_NCPU) base $(DIRS_y) || exit $$?  
  Makefile:235: target 'all' does not exist
  make -j1 base /home/dx/uclinux/uClinux-dist/prop libg uClibc || exit $?
--subdir-lib-base--  
--subdir-lib-base--   这里相当于本makefile里在其次启动make 执行本makefile 里的目标
--subdir-lib-base--   make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/lib'
--subdir-lib-base--
--subdir-lib-base--
--subdir-lib-base-- 
--subdir-lib-base-- 
--subdir-lib-base-- 
--subdir-lib-base-- .PHONY: basepost
--subdir-lib-base-- basepost:
--subdir-lib-base-- ifneq ($(findstring uClibc,$(LIBCDIR)),)
--subdir-lib-base--  $(MAKE) -C $(LIBCDIR) install_headers PREFIX=$(STAGEDIR)/ DEVEL_PREFIX=uClibc/
--subdir-lib-base-- endif
--subdir-lib-base--  
--subdir-lib-base--  
--subdir-lib-base--  
--subdir-lib-base--  .PHONY: baseprep
--subdir-lib-base-- baseprep:
--subdir-lib-base--  mkdir -p $(STAGEDIR)/lib
--subdir-lib-base--  $(MAKE) -j1 -C ../include || exit $$?
--subdir-lib-base--
--subdir-lib-base--  $(dir_base): baseprep
--subdir-lib-base--  
--subdir-lib-base--   dir_base = $(LIBCDIR)            
--subdir-lib-base--    LIBCDIR = uClibc                 
--subdir-lib-base--    base: $(dir_base) basepost       
--subdir-lib-base--       @ln -sf $(LD_LIB) $(LD_LIB_DEST)
--subdir-lib-base--
--subdir-lib-base-- 因为dir_base 是uClibc,因此处理完uClibc的依赖baseprep后,还要处理uClibc对应$(DIRS_y)定义的执行体
--subdir-lib-base-- 最后才执行 basepost依赖和base目标
--subdir-lib-base--
--subdir-lib-base--  因此又去处理base目标依赖的$(dir_base)=uclibc目标以来的的baseprep目标
--subdir-lib-base--   先处理baseprep目标  
--subdir-lib-base--   Makefile:256: target 'baseprep' does not exist
--subdir-lib-base--   mkdir -p /home/dx/uclinux/uClinux-dist/staging/lib
--subdir-lib-base--     make -j1 -C ../include || exit $?
--subdir-lib-base--           make[3]: Entering directory '/home/dx/uclinux/uClinux-dist/include'
--subdir-lib-base--           Makefile:70: target 'link' does not exist
--subdir-lib-base--           Makefile:86: target 'cpplink' does not exist
--subdir-lib-base--           make[3]: Leaving directory '/home/dx/uclinux/uClinux-dist/include'
--subdir-lib-base--     Makefile:271: update target 'uClibc' due to: baseprep
--subdir-lib-base--    
--subdir-lib-base--    
--subdir-lib-base-- 这里根据# the actual dir target
--subdir-lib-base-- .PHONY: $(DIRS_y)
--subdir-lib-base-- $(DIRS_y):
--subdir-lib-base-- # the actual dir target
--subdir-lib-base-- .PHONY: $(DIRS_y)
--subdir-lib-base-- $(DIRS_y):
--subdir-lib-base--  i=$(call DIRPATH,$@); [ ! -d $$i ] || ( touch $$i/.sgbuilt_lib && $(MAKE) $(SUBDIR_SMP_BUILD) -C $$i ) || exit $$?
--subdir-lib-base--  @set -f; \
--subdir-lib-base--  for p in $(lib_$@); do \
--subdir-lib-base--   set +f; \
--subdir-lib-base--   for i in $(ROOTDIR)/lib/$(call DIRPATH,$@)/$$p; do \
--subdir-lib-base--    [ ! -e "$$i" ] && continue; \
--subdir-lib-base--    [ "`basename $$i`" = CVS ] && continue; \
--subdir-lib-base--    [ -L "$(STAGEDIR)/lib/`basename $$i`" ] && continue; \
--subdir-lib-base--    ln -s $$i $(STAGEDIR)/lib/.; \
--subdir-lib-base--    echo "ln -s $$i $(STAGEDIR)/lib/."; \
--subdir-lib-base--   done ; \
--subdir-lib-base--  done
--subdir-lib-base--  @set -f; \
--subdir-lib-base--  for p in $(inc_$@); do \
--subdir-lib-base--   src=$(ROOTDIR)/lib/$(call DIRPATH,$@)/`expr "$$p" : '\(.*\),.*'` ; \
--subdir-lib-base--   dst=$(STAGEDIR)/include/`expr "$$p" : '.*,\(.*\)'` ; \
--subdir-lib-base--   set +f; \
--subdir-lib-base--   for i in $$src; do \
--subdir-lib-base--    [ ! -e "$$i" ] && continue; \
--subdir-lib-base--    [ "`basename $$i`" = CVS ] && continue; \
--subdir-lib-base--    [ -L "$$dst/`basename $$i`" ] && continue; \
--subdir-lib-base--    [ -d $$dst ] || mkdir $$dst; \
--subdir-lib-base--    ln -s $$i $$dst/.; \
--subdir-lib-base--    echo "ln -s $$i $$dst/."; \
--subdir-lib-base--   done ; \
--subdir-lib-base--  done
--subdir-lib-base--     定义的规则进行才处理,也就是进入uClibc进行处理
--subdir-lib-base--     i=uClibc; [ ! -d $i ] || ( touch $i/.sgbuilt_lib && make -j1 -C $i ) || exit $?
--subdir-lib-base--     make[3]: Entering directory '/home/dx/uclinux/uClinux-dist/uClibc'
--subdir-lib-base--    STRIP -x -R .note -R .comment lib/libc.a
--subdir-lib-base--     make[3]: Leaving directory '/home/dx/uclinux/uClinux-dist/uClibc'
--subdir-lib-base--
--subdir-lib-base--    
--subdir-lib-base--   set -f; \
--subdir-lib-base--   for p in ; do \
--subdir-lib-base--    set +f; \
--subdir-lib-base--    for i in /home/dx/uclinux/uClinux-dist/lib/uClibc/$p; do \
--subdir-lib-base--     [ ! -e "$i" ] && continue; \
--subdir-lib-base--     [ "`basename $i`" = CVS ] && continue; \
--subdir-lib-base--     [ -L "/home/dx/uclinux/uClinux-dist/staging/lib/`basename $i`" ] && continue; \
--subdir-lib-base--     ln -s $i /home/dx/uclinux/uClinux-dist/staging/lib/.; \
--subdir-lib-base--     echo "ln -s $i /home/dx/uclinux/uClinux-dist/staging/lib/."; \
--subdir-lib-base--    done ; \
--subdir-lib-base--   done
--subdir-lib-base--   set -f; \
--subdir-lib-base--   for p in ; do \
--subdir-lib-base--    src=/home/dx/uclinux/uClinux-dist/lib/uClibc/`expr "$p" : '\(.*\),.*'` ; \
--subdir-lib-base--    dst=/home/dx/uclinux/uClinux-dist/staging/include/`expr "$p" : '.*,\(.*\)'` ; \
--subdir-lib-base--    set +f; \
--subdir-lib-base--    for i in $src; do \
--subdir-lib-base--     [ ! -e "$i" ] && continue; \
--subdir-lib-base--     [ "`basename $i`" = CVS ] && continue; \
--subdir-lib-base--     [ -L "$dst/`basename $i`" ] && continue; \
--subdir-lib-base--     [ -d $dst ] || mkdir $dst; \
--subdir-lib-base--     ln -s $i $dst/.; \
--subdir-lib-base--     echo "ln -s $i $dst/."; \
--subdir-lib-base--    done ; \
--subdir-lib-base--   done
--subdir-lib-base--  
--subdir-lib-base--   处理base目标依赖的第2个目标basepost的执行体
--subdir-lib-base--   Makefile:262: update target 'basepost' due to: uClibc
--subdir-lib-base--  
--subdir-lib-base--   make -C uClibc install_headers PREFIX=/home/dx/uclinux/uClinux-dist/staging/ DEVEL_PREFIX=uClibc/
--subdir-lib-base--  
--subdir-lib-base--           make[3]: Entering directory '/home/dx/uclinux/uClinux-dist/uClibc'
--subdir-lib-base--           Makefile.in:207: update target 'extra/scripts/unifdef' due to: extra/scripts/unifdef.c
--subdir-lib-base--                echo "  "HOSTCC extra/scripts/unifdef; gcc extra/scripts/unifdef.c  -o extra/scripts/unifdef    -Os -Wall 
--subdir-lib-base--                  HOSTCC extra/scripts/unifdef
--subdir-lib-base--                Makefile.in:302: target '/home/dx/uclinux/uClinux-dist/staging/uClibc/include' does not exist
--subdir-lib-base--                echo "  "MKDIR /home/dx/uclinux/uClinux-dist/staging/uClibc/include
--subdir-lib-base--                  MKDIR /home/dx/uclinux/uClinux-dist/staging/uClibc/include
--subdir-lib-base--                install -d /home/dx/uclinux/uClinux-dist/staging/uClibc/include
--subdir-lib-base--                Makefile.in:310: update target 'install_headers' due to: headers extra/scripts/unifdef
--subdir-lib-base--                echo "  "INSTALL "include -> /home/dx/uclinux/uClinux-dist/staging/uClibc/include"
--subdir-lib-base--                  INSTALL include -> /home/dx/uclinux/uClinux-dist/staging/uClibc/include
--subdir-lib-base--                top_builddir=./ \
--subdir-lib-base--                ./extra/scripts/install_headers.sh \
--subdir-lib-base--                include /home/dx/uclinux/uClinux-dist/staging/uClibc/include
--subdir-lib-base--                cd /home/dx/uclinux/uClinux-dist/staging/uClibc/include && rm -f -r dl-osinfo.h hp-timing.h _lfs_64.h bits/uClibc_arch_features.h bits/kernel_sigaction.h bits/kernel_stat.h bits/kernel_types.h bits/syscalls.h bits/syscalls-common.h bits/uClibc_fpmax.h bits/uClibc_uintmaxtostr.h bits/uClibc_uwchar.h bits/uClibc_va_copy.h bits/sigcontextinfo.h bits/stackinfo.h tls.h rpc/des_crypt.h rpc/key_prot.h rpc/rpc_des.h dlfcn.h bits/dlfcn.h thread_db.h fenv.h bits/fenv.h bits/fenvinline.h ftw.h fts.h libintl.h execinfo.h iconv.h bits/uClibc_ctype.h mqueue.h bits/mqueue.h sched.h bits/sched.h semaphore.h shadow.h *thread*.h semaphore.h bits/*thread*.h bits/initspin.h atomic.h bits/atomic.h bits/utmpx.h utmpx.h wchar.h wctype.h wordexp.h xlocale.h ifaddrs.h ustat.h sys/ustat.h bits/ustat.h
--subdir-lib-base--                cd /home/dx/uclinux/uClinux-dist/staging/uClibc/include && mv -f wchar-stub.h wchar.h
--subdir-lib-base--           make[3]: Leaving directory '/home/dx/uclinux/uClinux-dist/uClibc'      
--subdir-lib-base--   处理base目标
--subdir-lib-base--   Makefile:248: update target 'base' due to: uClibc basepost
--subdir-lib-base--   ln -sf /home/dx/uclinux/uClinux-dist/lib/uClibc/lib/ld-uClibc-0.9.29.so /home/dx/uclinux/uClinux-dist/staging/lib/ld-linux.so.2
         lib-
         lib-
--subdir-lib-libg--  处理第3个目录目标libg
--subdir-lib-libg--  Makefile:271: update target 'libg' due to: base
--subdir-lib-libg--
--subdir-lib-libg--  到处找不到目标,还是在以下目标中定义。按照顺序应该先执行/home/dx/uclinux/uClinux-dist/prop,但因为它的依赖关系,需要先执行base 和 libg
--subdir-lib-libg--  .PHONY: $(DIRS_y)
--subdir-lib-libg--$(DIRS_y):
--subdir-lib-libg-- 
--subdir-lib-libg--  i=libg; [ ! -d $i ] || ( touch $i/.sgbuilt_lib && make -j1 -C $i ) || exit $?
--subdir-lib-libg--  make[3]: Entering directory '/home/dx/uclinux/uClinux-dist/lib/libg'
--subdir-lib-libg--  Makefile:17: update target 'all' due to: gtermcap
--subdir-lib-libg--  for i in gtermcap ; do make -C $i || exit gtermcap ; done
--subdir-lib-libg--  make[4]: Entering directory '/home/dx/uclinux/uClinux-dist/lib/libg/gtermcap'
--subdir-lib-libg--
--subdir-lib-libg--  make[4]: Leaving directory '/home/dx/uclinux/uClinux-dist/lib/libg/gtermcap'
--subdir-lib-libg--  make[3]: Leaving directory '/home/dx/uclinux/uClinux-dist/lib/libg'
--subdir-lib-libg--  set -f; \
--subdir-lib-libg--  for p in *.a; do \
--subdir-lib-libg--   set +f; \
--subdir-lib-libg--   for i in /home/dx/uclinux/uClinux-dist/lib/libg/$p; do \
--subdir-lib-libg--    [ ! -e "$i" ] && continue; \
--subdir-lib-libg--    [ "`basename $i`" = CVS ] && continue; \
--subdir-lib-libg--    [ -L "/home/dx/uclinux/uClinux-dist/staging/lib/`basename $i`" ] && continue; \
--subdir-lib-libg--    ln -s $i /home/dx/uclinux/uClinux-dist/staging/lib/.; \
--subdir-lib-libg--    echo "ln -s $i /home/dx/uclinux/uClinux-dist/staging/lib/."; \
--subdir-lib-libg--   done ; \
--subdir-lib-libg--  done
--subdir-lib-libg--  ln -s /home/dx/uclinux/uClinux-dist/lib/libg/libg.a /home/dx/uclinux/uClinux-dist/staging/lib/.
--subdir-lib-libg--  set -f; \
--subdir-lib-libg--  for p in ; do \
--subdir-lib-libg--   src=/home/dx/uclinux/uClinux-dist/lib/libg/`expr "$p" : '\(.*\),.*'` ; \
--subdir-lib-libg--   dst=/home/dx/uclinux/uClinux-dist/staging/include/`expr "$p" : '.*,\(.*\)'` ; \
--subdir-lib-libg--   set +f; \
--subdir-lib-libg--   for i in $src; do \
--subdir-lib-libg--    [ ! -e "$i" ] && continue; \
--subdir-lib-libg--    [ "`basename $i`" = CVS ] && continue; \
--subdir-lib-libg--    [ -L "$dst/`basename $i`" ] && continue; \
--subdir-lib-libg--    [ -d $dst ] || mkdir $dst; \
--subdir-lib-libg--    ln -s $i $dst/.; \
--subdir-lib-libg--    echo "ln -s $i $dst/."; \
--subdir-lib-libg--   done ; \
--subdir-lib-libg--  done
         lib-
--subdir-lib-prop--  根据   .PHONY: $(DIRS_y)规则,处理home/dx/uclinux/uClinux-dist/prop
--subdir-lib-prop-- # And build libraries in the prop directory last
--subdir-lib-prop--  dir_extra += $(ROOTDIR)/prop
--subdir-lib-prop--
--subdir-lib-prop-- .PHONY: $(dir_extra)
--subdir-lib-prop--     $(dir_extra): base $(dir_y)
--subdir-lib-prop--
--subdir-lib-prop--  Makefile:271: update target '/home/dx/uclinux/uClinux-dist/prop' due to: base libg
--subdir-lib-prop--  i=/home/dx/uclinux/uClinux-dist/prop; [ ! -d $i ] || ( touch $i/.sgbuilt_lib && make -j1 -C $i ) || exit $?
--subdir-lib-prop--  set -f; \
--subdir-lib-prop--  for p in ; do \
--subdir-lib-prop--   set +f; \
--subdir-lib-prop--   for i in /home/dx/uclinux/uClinux-dist/lib//home/dx/uclinux/uClinux-dist/prop/$p; do \
--subdir-lib-prop--    [ ! -e "$i" ] && continue; \
--subdir-lib-prop--    [ "`basename $i`" = CVS ] && continue; \
--subdir-lib-prop--    [ -L "/home/dx/uclinux/uClinux-dist/staging/lib/`basename $i`" ] && continue; \
--subdir-lib-prop--    ln -s $i /home/dx/uclinux/uClinux-dist/staging/lib/.; \
--subdir-lib-prop--    echo "ln -s $i /home/dx/uclinux/uClinux-dist/staging/lib/."; \
--subdir-lib-prop--   done ; \
--subdir-lib-prop--  done
--subdir-lib-prop--  set -f; \
--subdir-lib-prop--  for p in ; do \
--subdir-lib-prop--   src=/home/dx/uclinux/uClinux-dist/lib//home/dx/uclinux/uClinux-dist/prop/`expr "$p" : '\(.*\),.*'` ; \
--subdir-lib-prop--   dst=/home/dx/uclinux/uClinux-dist/staging/include/`expr "$p" : '.*,\(.*\)'` ; \
--subdir-lib-prop--   set +f; \
--subdir-lib-prop--   for i in $src; do \
--subdir-lib-prop--    [ ! -e "$i" ] && continue; \
--subdir-lib-prop--    [ "`basename $i`" = CVS ] && continue; \
--subdir-lib-prop--    [ -L "$dst/`basename $i`" ] && continue; \
--subdir-lib-prop--    [ -d $dst ] || mkdir $dst; \
--subdir-lib-prop--    ln -s $i $dst/.; \
--subdir-lib-prop--    echo "ln -s $i $dst/."; \
--subdir-lib-prop--   done ; \
--subdir-lib-prop--  done
  因为前面已经处理libg 和uClibc
  因此按照顺序处理的libg和uClib就不需要进行处理
  make[2]: Nothing to be done for 'libg'.
  make[2]: Nothing to be done for 'uClibc'.
  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/lib'
 
  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/lib'
 
  开始处理subdir的第3个目标include
 第1个目标就是include ,为什么还要再处理呢
 
  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/include'
  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/include'
  开始处理subdir的第4个目标user
 第1个目标就是include ,为什么还要再处理呢
 
  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/user'
 
  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/user'
 
 完成了subdir的执行体

开始处理第4个目标romfs
.PHONY: romfs
romfs: romfs.newlog romfs.subdirs modules_install romfs.post
.PHONY: romfs.newlog
-romfs.newlog- romfs.newlog:
-romfs.newlog-  rm -f $(IMAGEDIR)/romfs-inst.log
-romfs.newlog- 
-romfs.newlog-   Makefile:156: target 'romfs.newlog' does not exist
-romfs.newlog-   rm -f /home/dx/uclinux/uClinux-dist/images/romfs-inst.log
-romfs-subdir-  Makefile:160: target 'romfs.subdirs' does not exist
-romfs-subdir-  for dir in vendors  include lib include user ; do [ ! -d $dir ] || make ARCH=arm -C $dir romfs || exit 1 ; done
-romfs-subdir-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/vendors'
-romfs-subdir-  Makefile:24: target 'romfs' does not exist
-romfs-subdir-  if [ "Versatile-PB-noMMU" = "" ] ; then \
-romfs-subdir-   echo "No Vendor/Product configured" ; \
-romfs-subdir-  else \
-romfs-subdir-   make -C /home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU dir_v=/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU -f /home/dx/uclinux/uClinux-dist/vendors/vendors-common.mak romfs ; \
-romfs-subdir-  fi
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU'
-romfs-subdir-  /home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU/Makefile:37: target 'romfs' does not exist
-romfs-subdir-  [ -d /home/dx/uclinux/uClinux-dist/romfs ] || rm -f /home/dx/uclinux/uClinux-dist/romfs
-romfs-subdir-  [ -d /home/dx/uclinux/uClinux-dist/romfs ] || mkdir -p /home/dx/uclinux/uClinux-dist/romfs
-romfs-subdir-  for i in bin dev etc etc/config etc/default home home/httpd home/httpd/cgi-bin lib mnt proc sbin sys tmp usr usr/var var; do \
-romfs-subdir-   [ -d /home/dx/uclinux/uClinux-dist/romfs/$i ] || mkdir -p /home/dx/uclinux/uClinux-dist/romfs/$i; \
-romfs-subdir-  done
-romfs-subdir-  romfs-inst.sh ../../Generic/romfs /
-romfs-subdir-  ../../Generic/romfs
-romfs-subdir-  romfs-inst.sh ../../Generic/httpd /home/httpd
-romfs-subdir-  ../../Generic/httpd
-romfs-subdir-  romfs-inst.sh ../../Generic/big/inittab /etc/inittab
-romfs-subdir-  romfs-inst.sh /etc/rc
-romfs-subdir-  romfs-inst.sh /etc/inittab
-romfs-subdir-  romfs-inst.sh /etc/motd
-romfs-subdir-  romfs-inst.sh /etc/default/start
-romfs-subdir-  romfs-inst.sh -s /var/tmp/log /dev/log
-romfs-subdir-  romfs-inst.sh -s /bin/init /init
-romfs-subdir-  echo "ARM/Versatile-PB-noMMU Version 1.0.0 -- " `date` > /home/dx/uclinux/uClinux-dist/romfs/etc/version
-romfs-subdir-  echo "ARM/Versatile-PB" > /home/dx/uclinux/uClinux-dist/romfs/etc/issue
-romfs-subdir-  echo "versatile" > /home/dx/uclinux/uClinux-dist/romfs/etc/default/hostname
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU'
-romfs-subdir-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/vendors'
-romfs-subdir-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/include'
-romfs-subdir-  make[1]: Nothing to be done for 'romfs'.
-romfs-subdir-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/include'
-romfs-subdir-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/lib'
-romfs-subdir-  Makefile:311: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -s /etc/config/passwd /etc/passwd
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -s /etc/config/group /etc/group
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -s /etc/config/mtab /etc/mtab
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -s /etc/config/fstab /etc/fstab
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -s /etc/config/hosts /etc/hosts
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -s /etc/config/resolv.conf /etc/resolv.conf
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -e CONFIG_USER_BASH_BASH -s /etc/config/profile /etc/profile
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_FLATFSD_ETC_CONFIG -e CONFIG_USER_TINYLOGIN_SHADOWPASSWDS -s /etc/config/shadow /etc/shadow
-romfs-subdir-  for i in /home/dx/uclinux/uClinux-dist/prop libg uClibc ; do \
-romfs-subdir-   [ ! -d $i ] || make -j1 -C $i romfs || exit $? ; \
-romfs-subdir-  done
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/lib/libg'
-romfs-subdir-  make[2]: Nothing to be done for 'romfs'.
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/lib/libg'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/uClibc'
-romfs-subdir-  Makefile.in:496: target 'romfs' does not exist
-romfs-subdir-  [ -e /home/dx/uclinux/uClinux-dist/romfs/lib ] || mkdir /home/dx/uclinux/uClinux-dist/romfs/lib
-romfs-subdir-  if [ "" ]; then \
-romfs-subdir-   romfs-inst.sh  /lib/lib.so; \
-romfs-subdir-  fi
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/uClibc'
-romfs-subdir-  FNAME=$(ucfront-gcc arm-uclinuxeabi-gcc  -O2                     -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -Dlinux -D__linux__ -Dunix -D__uClinux__ -print-file-name=libgcc_s.so.1) ; \
-romfs-subdir-  romfs-inst.sh -e CONFIG_LIB_INSTALL_LIBGCC_S $FNAME /lib/`basename $FNAME`
-romfs-subdir-  FNAME=$(ucfront-gcc arm-uclinuxeabi-gcc  -O2                     -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -Dlinux -D__linux__ -Dunix -D__uClinux__ -print-file-name=libatomic.so.1) ; \
-romfs-subdir-  romfs-inst.sh -e CONFIG_LIB_INSTALL_LIBATOMIC $FNAME /lib/`basename $FNAME`
-romfs-subdir-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/lib'
-romfs-subdir-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/include'
-romfs-subdir-  make[1]: Nothing to be done for 'romfs'.
-romfs-subdir-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/include'
-romfs-subdir-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/user'
-romfs-subdir-  Makefile:475: target 'romfs' does not exist
-romfs-subdir-  for i in dhcpcd-new games inetd init net-tools null ping sash telnet /home/dx/uclinux/uClinux-dist/prop ; do \
-romfs-subdir-   [ ! -d $i ] || make -j1 -C $i romfs || exit $? ; \
-romfs-subdir-  done
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/dhcpcd-new'
-romfs-subdir-  Makefile:25: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh /bin/dhcpcd
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/dhcpcd-new'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/games'
-romfs-subdir-  Makefile:23: target 'romfs' does not exist
-romfs-subdir-  for i in  dummy ; do \
-romfs-subdir-   [ $i = dummy ] || make -C $i romfs || exit  ; \
-romfs-subdir-  done
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/games'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/inetd'
-romfs-subdir-  Makefile:28: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh /bin/inetd
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/inetd'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/init'
-romfs-subdir-  Makefile:38: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_EXPAND /bin/expand
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_INIT /bin/init
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_OVERLAY -p 755 /bin/init-overlay
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_INIT -e CONFIG_USER_BUSYBOX_SYSLOGD \
-romfs-subdir-    -a "slog:unknown:/bin/syslogd -n" /etc/inittab
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_INIT -e CONFIG_USER_BUSYBOX_KLOGD \
-romfs-subdir-    -a "klog:unknown:/bin/klogd -n" /etc/inittab
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_INIT -e CONFIG_USER_SYSKLOGD \
-romfs-subdir-    -a "slog:unknown:/usr/sbin/syslogd -n" /etc/inittab
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_INIT_INIT -e CONFIG_USER_SYSKLOGD \
-romfs-subdir-    -a "klog:unknown:/usr/sbin/klogd -n -x" /etc/inittab
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/init'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/net-tools'
-romfs-subdir-  Makefile:280: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_ARP //sbin/arp
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_HOSTNAME //bin/hostname
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_IFCONFIG //sbin/ifconfig
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_NAMEIF //sbin/nameif
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_NETSTAT //bin/netstat
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_PLIPCONFIG //sbin/plipconfig
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_RARP //sbin/rarp
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_ROUTE //sbin/route
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_SLATTACH //sbin/slattach
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_IPMADDR //sbin/ipmaddr
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_IPTUNNEL //sbin/iptunnel
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_NET_TOOLS_MII_TOOL //sbin/mii-tool
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/net-tools'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/null'
-romfs-subdir-  Makefile:11: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh /bin/null
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/null'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/ping'
-romfs-subdir-  Makefile:11: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh /bin/ping
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/ping'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/sash'
-romfs-subdir-  Makefile:41: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_SASH_SH       /bin/sh
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_SASH_REBOOT /bin/reboot
-romfs-subdir-  romfs-inst.sh -e CONFIG_USER_SASH_SHUTDOWN /bin/shutdown
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/sash'
-romfs-subdir-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/user/telnet'
-romfs-subdir-  Makefile:15: target 'romfs' does not exist
-romfs-subdir-  romfs-inst.sh /bin/telnet
-romfs-subdir-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/user/telnet'
-romfs-subdir-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/user'
 
 
-romfs-modules-install-  Makefile:124: target 'modules_install' does not exist
-romfs-modules-install-  . /home/dx/uclinux/uClinux-dist/linux/.config; \
-romfs-modules-install-  . /home/dx/uclinux/uClinux-dist/config/.config; \
-romfs-modules-install-  if [ "$CONFIG_MODULES" = "y" ]; then \
-romfs-modules-install-   [ -d /home/dx/uclinux/uClinux-dist/romfs/lib/modules ] || mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules; \
-romfs-modules-install-   make ARCH=arm CROSS_COMPILE=arm-uclinuxeabi- CFLAGS_KERNEL="" AFLAGS_KERNEL="" EXTRA_MODULE_DIRS="" -C linux INSTALL_MOD_CMD="romfs-inst.sh -S -r \"\"" INSTALL_MOD_PATH=/home/dx/uclinux/uClinux-dist/romfs DEPMOD=/home/dx/uclinux/uClinux-dist/tools/depmod.sh modules_install; \
-romfs-modules-install-   rm -f /home/dx/uclinux/uClinux-dist/romfs/lib/modules/*/build; \
-romfs-modules-install-   rm -f /home/dx/uclinux/uClinux-dist/romfs/lib/modules/*/source; \
-romfs-modules-install-   find /home/dx/uclinux/uClinux-dist/romfs/lib/modules -type f -name "*o" | xargs -r arm-uclinuxeabi-strip -R .comment -R .note -g --strip-unneeded; \
-romfs-modules-install-  fi
-romfs-modules-install-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/linux'
-romfs-modules-install-  Makefile:1127: target '_modinst_' does not exist
-romfs-modules-install-  rm -rf /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel
-romfs-modules-install-  rm -f /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/source
-romfs-modules-install-  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel
-romfs-modules-install-  ln -s `cd . && /bin/pwd` /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/source
-romfs-modules-install-  if [ ! . -ef  /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/build ]; then \
-romfs-modules-install-   rm -f /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/build ; \
-romfs-modules-install-   ln -s /home/dx/uclinux/uClinux-dist/linux /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/build ; \
-romfs-modules-install-  fi
-romfs-modules-install-  cp -f ./modules.order /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/
-romfs-modules-install-  cp -f ./modules.builtin /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/
-romfs-modules-install-  make -f ./scripts/Makefile.modinst
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'crypto/ansi_cprng.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/ansi_cprng.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/ansi_cprng.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/ansi_cprng.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/ansi_cprng.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'crypto/drbg.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/drbg.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/drbg.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/drbg.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/drbg.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'crypto/echainiv.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/echainiv.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/echainiv.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/echainiv.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/echainiv.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'crypto/hmac.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/hmac.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/hmac.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/hmac.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/hmac.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'crypto/jitterentropy_rng.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/jitterentropy_rng.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/jitterentropy_rng.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/jitterentropy_rng.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/jitterentropy_rng.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'crypto/sha256_generic.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/sha256_generic.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/sha256_generic.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; cp crypto/sha256_generic.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/crypto/sha256_generic.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'drivers/tty/serial/8250/8250.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; cp drivers/tty/serial/8250/8250.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; cp drivers/tty/serial/8250/8250.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; cp drivers/tty/serial/8250/8250.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'drivers/tty/serial/8250/8250_base.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; cp drivers/tty/serial/8250/8250_base.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; cp drivers/tty/serial/8250/8250_base.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; cp drivers/tty/serial/8250/8250_base.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250 ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/drivers/tty/serial/8250/8250_base.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'fs/fat/fat.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; cp fs/fat/fat.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; cp fs/fat/fat.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; cp fs/fat/fat.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/fat.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'fs/fat/vfat.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; cp fs/fat/vfat.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; cp fs/fat/vfat.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; cp fs/fat/vfat.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/fat/vfat.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'fs/nls/nls_base.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_base.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_base.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_base.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_base.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'fs/nls/nls_cp850.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_cp850.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_cp850.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_cp850.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_cp850.ko
-romfs-modules-install-  scripts/Makefile.modinst:36: target 'fs/nls/nls_iso8859-1.ko' does not exist
-romfs-modules-install-  echo '  mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_iso8859-1.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko'; mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_iso8859-1.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko
-romfs-modules-install-    mkdir -p /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; cp fs/nls/nls_iso8859-1.ko /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko ; true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko  && true /home/dx/uclinux/uClinux-dist/romfs/lib/modules/4.4.0-uc0/kernel/fs/nls/nls_iso8859-1.ko
-romfs-modules-install-  scripts/Makefile.modinst:17: update target '__modinst' due to: crypto/ansi_cprng.ko crypto/drbg.ko crypto/echainiv.ko crypto/hmac.ko crypto/jitterentropy_rng.ko crypto/sha256_generic.ko drivers/tty/serial/8250/8250.ko drivers/tty/serial/8250/8250_base.ko fs/fat/fat.ko fs/fat/vfat.ko fs/nls/nls_base.ko fs/nls/nls_cp850.ko fs/nls/nls_iso8859-1.ko
-romfs-modules-install-  :
-romfs-modules-install-  Makefile:1144: update target '_modinst_post' due to: _modinst_
-romfs-modules-install-  make -f ./scripts/Makefile.fwinst obj=firmware __fw_modinst
-romfs-modules-install-  scripts/Makefile.fwinst:53: target '__fw_modinst' does not exist
-romfs-modules-install-  :
-romfs-modules-install-  echo '  /bin/bash ./scripts/depmod.sh /home/dx/uclinux/uClinux-dist/tools/depmod.sh 4.4.0-uc0 ""'; /bin/bash ./scripts/depmod.sh /home/dx/uclinux/uClinux-dist/tools/depmod.sh 4.4.0-uc0 ""
-romfs-modules-install-    /bin/bash ./scripts/depmod.sh /home/dx/uclinux/uClinux-dist/tools/depmod.sh 4.4.0-uc0 ""
-romfs-modules-install-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/linux'
-romfs-pos-  Makefile:164: target 'romfs.post' does not exist
-romfs-pos-  make ARCH=arm -C vendors romfs.post
-romfs-pos-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/vendors'
-romfs-pos-  Makefile:24: target 'romfs.post' does not exist
-romfs-pos-  if [ "Versatile-PB-noMMU" = "" ] ; then \
-romfs-pos-   echo "No Vendor/Product configured" ; \
-romfs-pos-  else \
-romfs-pos-   make -C /home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU dir_v=/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU -f /home/dx/uclinux/uClinux-dist/vendors/vendors-common.mak romfs.post ; \
-romfs-pos-  fi
-romfs-pos-  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU'
-romfs-pos-  make[2]: Nothing to be done for 'romfs.post'.
-romfs-pos-  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU'
-romfs-pos-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/vendors'
-romfs-pos-  find /home/dx/uclinux/uClinux-dist/romfs/. -name CVS | xargs -r rm -rf
-romfs-pos-  . linux/.config; if [ "$CONFIG_INITRAMFS_SOURCE" != "" ]; then \
-romfs-pos-   make ARCH=arm CROSS_COMPILE=arm-uclinuxeabi- CFLAGS_KERNEL="" AFLAGS_KERNEL="" EXTRA_MODULE_DIRS="" -j1 -C linux zImage || exit 1; \
-romfs-pos-  fi
-romfs-pos- 
-romfs-pos- 
-romfs-pos- 
-romfs-pos-  因为linux/.config中定义了CONFIG_INITRAMFS_SOURCE="../romfs ../vendors/ARM/Versatile-PB-noMMU/romfs.dev"
-romfs-pos-  因此这里是romfs的执行体导致的,需要生成zImage目标
-romfs-pos- 
-romfs-pos-  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/linux'
-romfs-pos-   prepare scripts 目标中的FORCE目标处理,已经重复好多次了
-romfs-pos-   这后面的处理,同LINUX内核处理过程基本相同,但为什么还要处理一次呢,
-romfs-pos-   需要了解原因
-romfs-pos- 
-romfs-pos-  wac
-romfs-pos-  Makefile:932: update target 'vmlinux' due to: usr/built-in.o FORCE
-romfs-pos- 
-romfs-pos-    KSYM    .tmp_kallsyms1.o
-romfs-pos-    KSYM    .tmp_kallsyms2.o
-romfs-pos-    LD      vmlinux
-romfs-pos-    SYSMAP  System.map
-romfs-pos- 
-romfs-pos-  arch/arm/Makefile:328: update target 'Image' due to: vmlinux
-romfs-pos-  make -f ./scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-versatile/ arch/arm/boot/Image
-romfs-pos-  arch/arm/boot/Makefile:48: update target 'arch/arm/boot/Image' due to: vmlinux FORCE
-romfs-pos-  set -e;  echo '  arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image'; arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image; printf '%s\n' 'cmd_arch/arm/boot/Image := arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image' > arch/arm/boot/.Image.cmd
-romfs-pos-    arm-uclinuxeabi-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image
-romfs-pos-  : '  Kernel: arch/arm/boot/Image is ready'
-romfs-pos-  arch/arm/Makefile:328: update target 'zImage' due to: vmlinux Image
-romfs-pos-  make -f ./scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-versatile/ arch/arm/boot/zImage
-romfs-pos-  arch/arm/boot/Makefile:48: update target 'arch/arm/boot/Image' due to: FORCE
-romfs-pos-  : '  Kernel: arch/arm/boot/Image is ready'
-romfs-pos- 
-romfs-pos-  arch/arm/boot/Makefile:52: update target 'arch/arm/boot/compressed/vmlinux' due to: arch/arm/boot/Image FORCE
-romfs-pos-  make -f ./scripts/Makefile.build obj=arch/arm/boot/compressed arch/arm/boot/compressed/vmlinux
-romfs-pos-  scripts/Makefile.build:306: update target 'arch/arm/boot/compressed/vmlinux.lds' due to: FORCE
-romfs-pos-  scripts/Makefile.build:294: update target 'arch/arm/boot/compressed/head.o' due to: FORCE
-romfs-pos-  arch/arm/boot/compressed/Makefile:182: update target 'arch/arm/boot/compressed/piggy.gzip' due to: arch/arm/boot/compressed/../Image FORCE
-romfs-pos-  set -e;  echo '  (cat arch/arm/boot/compressed/../Image | gzip -n -f -9 > arch/arm/boot/compressed/piggy.gzip) || (rm -f arch/arm/boot/compressed/piggy.gzip ; false)'; (cat arch/arm/boot/compressed/../Image | gzip -n -f -9 > arch/arm/boot/compressed/piggy.gzip) || (rm -f arch/arm/boot/compressed/piggy.gzip ; false); printf '%s\n' 'cmd_arch/arm/boot/compressed/piggy.gzip := (cat arch/arm/boot/compressed/../Image | gzip -n -f -9 > arch/arm/boot/compressed/piggy.gzip) || (rm -f arch/arm/boot/compressed/piggy.gzip ; false)' > arch/arm/boot/compressed/.piggy.gzip.cmd
-romfs-pos-    (cat arch/arm/boot/compressed/../Image | gzip -n -f -9 > arch/arm/boot/compressed/piggy.gzip) || (rm -f arch/arm/boot/compressed/piggy.gzip ; false)
-romfs-pos-  scripts/Makefile.build:294: update target 'arch/arm/boot/compressed/piggy.gzip.o' due to: FORCE arch/arm/boot/compressed/piggy.gzip
-romfs-pos-  set -e;  echo '  arm-uclinuxeabi-gcc -Wp,-MD,arch/arm/boot/compressed/.piggy.gzip.o.d  -nostdinc -isystem /home/dx/tools/dx/usr/local/bin/../lib/gcc/arm-uclinuxeabi/5.4.0/include -I./arch/arm/include -Iarch/arm/include/generated/uapi -Iarch/arm/include/generated  -Iinclude -I./arch/arm/include/uapi -Iarch/arm/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-versatile/include -Iarch/arm/plat-versatile/include   -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -include asm/unified.h -msoft-float -Wa,-gdwarf-2 -DCC_HAVE_ASM_GOTO        -DZIMAGE     -c -o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/piggy.gzip.S'; arm-uclinuxeabi-gcc -Wp,-MD,arch/arm/boot/compressed/.piggy.gzip.o.d  -nostdinc -isystem /home/dx/tools/dx/usr/local/bin/../lib/gcc/arm-uclinuxeabi/5.4.0/include -I./arch/arm/include -Iarch/arm/include/generated/uapi -Iarch/arm/include/generated  -Iinclude -I./arch/arm/include/uapi -Iarch/arm/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-versatile/include -Iarch/arm/plat-versatile/include   -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -include asm/unified.h -msoft-float -Wa,-gdwarf-2 -DCC_HAVE_ASM_GOTO        -DZIMAGE     -c -o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/piggy.gzip.S; scripts/basic/fixdep arch/arm/boot/compressed/.piggy.gzip.o.d arch/arm/boot/compressed/piggy.gzip.o 'arm-uclinuxeabi-gcc -Wp,-MD,arch/arm/boot/compressed/.piggy.gzip.o.d  -nostdinc -isystem /home/dx/tools/dx/usr/local/bin/../lib/gcc/arm-uclinuxeabi/5.4.0/include -I./arch/arm/include -Iarch/arm/include/generated/uapi -Iarch/arm/include/generated  -Iinclude -I./arch/arm/include/uapi -Iarch/arm/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-versatile/include -Iarch/arm/plat-versatile/include   -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -include asm/unified.h -msoft-float -Wa,-gdwarf-2 -DCC_HAVE_ASM_GOTO        -DZIMAGE     -c -o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/piggy.gzip.S' > arch/arm/boot/compressed/.piggy.gzip.o.tmp; rm -f arch/arm/boot/compressed/.piggy.gzip.o.d; mv -f arch/arm/boot/compressed/.piggy.gzip.o.tmp arch/arm/boot/compressed/.piggy.gzip.o.cmd
-romfs-pos-    arm-uclinuxeabi-gcc -Wp,-MD,arch/arm/boot/compressed/.piggy.gzip.o.d  -nostdinc -isystem /home/dx/tools/dx/usr/local/bin/../lib/gcc/arm-uclinuxeabi/5.4.0/include -I./arch/arm/include -Iarch/arm/include/generated/uapi -Iarch/arm/include/generated  -Iinclude -I./arch/arm/include/uapi -Iarch/arm/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-versatile/include -Iarch/arm/plat-versatile/include   -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -include asm/unified.h -msoft-float -Wa,-gdwarf-2 -DCC_HAVE_ASM_GOTO        -DZIMAGE     -c -o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/piggy.gzip.S
-romfs-pos-  scripts/Makefile.build:258: update target 'arch/arm/boot/compressed/misc.o' due to: FORCE
-romfs-pos-  scripts/Makefile.build:258: update target 'arch/arm/boot/compressed/decompress.o' due to: FORCE
-romfs-pos-  scripts/Makefile.build:258: update target 'arch/arm/boot/compressed/string.o' due to: FORCE
-romfs-pos-  scripts/Makefile.build:294: update target 'arch/arm/boot/compressed/lib1funcs.o' due to: FORCE
-romfs-pos-  scripts/Makefile.build:294: update target 'arch/arm/boot/compressed/ashldi3.o' due to: FORCE
-romfs-pos-  scripts/Makefile.build:294: update target 'arch/arm/boot/compressed/bswapsdi2.o' due to: FORCE
-romfs-pos-  arch/arm/boot/compressed/Makefile:177: update target 'arch/arm/boot/compressed/vmlinux' due to: arch/arm/boot/compressed/piggy.gzip.o FORCE
-romfs-pos-  if [ 1 -gt 1 -a "" = "" ]; then echo 'multiple zreladdrs: 0x00008000'; echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; false; fi
-romfs-pos-  set -e;  echo '  arm-uclinuxeabi-ld -EL    --defsym _kernel_bss_size=70924 --defsym zreladdr=0x00008000 -p --no-undefined -X -T arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/misc.o arch/arm/boot/compressed/decompress.o arch/arm/boot/compressed/string.o arch/arm/boot/compressed/lib1funcs.o arch/arm/boot/compressed/ashldi3.o arch/arm/boot/compressed/bswapsdi2.o -o arch/arm/boot/compressed/vmlinux'; arm-uclinuxeabi-ld -EL    --defsym _kernel_bss_size=70924 --defsym zreladdr=0x00008000 -p --no-undefined -X -T arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/misc.o arch/arm/boot/compressed/decompress.o arch/arm/boot/compressed/string.o arch/arm/boot/compressed/lib1funcs.o arch/arm/boot/compressed/ashldi3.o arch/arm/boot/compressed/bswapsdi2.o -o arch/arm/boot/compressed/vmlinux; printf '%s\n' 'cmd_arch/arm/boot/compressed/vmlinux := arm-uclinuxeabi-ld -EL    --defsym _kernel_bss_size=70924 --defsym zreladdr=0x00008000 -p --no-undefined -X -T arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/misc.o arch/arm/boot/compressed/decompress.o arch/arm/boot/compressed/string.o arch/arm/boot/compressed/lib1funcs.o arch/arm/boot/compressed/ashldi3.o arch/arm/boot/compressed/bswapsdi2.o -o arch/arm/boot/compressed/vmlinux' > arch/arm/boot/compressed/.vmlinux.cmd
-romfs-pos-    arm-uclinuxeabi-ld -EL    --defsym _kernel_bss_size=70924 --defsym zreladdr=0x00008000 -p --no-undefined -X -T arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.gzip.o arch/arm/boot/compressed/misc.o arch/arm/boot/compressed/decompress.o arch/arm/boot/compressed/string.o arch/arm/boot/compressed/lib1funcs.o arch/arm/boot/compressed/ashldi3.o arch/arm/boot/compressed/bswapsdi2.o -o arch/arm/boot/compressed/vmlinux
-romfs-pos-  bad_syms=$(arm-uclinuxeabi-nm arch/arm/boot/compressed/vmlinux | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && [ -z "$bad_syms" ] || ( echo "following symbols must have non local/private scope:" >&2; echo "$bad_syms" >&2; rm -f arch/arm/boot/compressed/vmlinux; false )
-romfs-pos-  arch/arm/boot/Makefile:55: update target 'arch/arm/boot/zImage' due to: arch/arm/boot/compressed/vmlinux FORCE
-romfs-pos-  set -e;  echo '  arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage'; arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage; printf '%s\n' 'cmd_arch/arm/boot/zImage := arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage' > arch/arm/boot/.zImage.cmd
-romfs-pos-    arm-uclinuxeabi-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage
-romfs-pos-  : '  Kernel: arch/arm/boot/zImage is ready'
-romfs-pos-  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/linux'
 
 处理all的最后一个目标,image
 
  Makefile:172: target 'image' does not exist
  .PHONY: image
image:
 [ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
 $(MAKEARCH) -C vendors image
 
  [ -d /home/dx/uclinux/uClinux-dist/images ] || mkdir -p /home/dx/uclinux/uClinux-dist/images
  make ARCH=arm -C vendors image
  make[1]: Entering directory '/home/dx/uclinux/uClinux-dist/vendors'
  Makefile:24: target 'image' does not exist
  if [ "Versatile-PB-noMMU" = "" ] ; then \
   echo "No Vendor/Product configured" ; \
  else \
   make -C /home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU dir_v=/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU -f /home/dx/uclinux/uClinux-dist/vendors/vendors-common.mak image ; \
  fi
  make[2]: Entering directory '/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU'
 
  /home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU/Makefile:56: target 'image' does not exist
  genromfs -v -V "ROMdisk" -f /home/dx/uclinux/uClinux-dist/images/rootfs.bin -d /home/dx/uclinux/uClinux-dist/romfs
  cp /home/dx/uclinux/uClinux-dist/linux/arch/arm/boot/zImage /home/dx/uclinux/uClinux-dist/images/zImage
  make[2]: Leaving directory '/home/dx/uclinux/uClinux-dist/vendors/ARM/Versatile-PB-noMMU'
  make[1]: Leaving directory '/home/dx/uclinux/uClinux-dist/vendors'

你可能感兴趣的:(uclinux 编译心得七:根据make 的trace信息,分析处理过程)