海思方案中uboot在源目录能编译过,用-C指定源码目录也能编过,但是我想用O=xxx或者用BUILD_DIR指定输出目录,输出到另一个目录时报错,看错误是ln -s  。。crc32时,目录不对,前面多了一层目录,有没有知道的

解决方案 »

  1.   

    make[2]: Entering directory `/home/xxx/create_prj/uboot/u-boot-2010.06/common'
    ln -s /home/xxx/create_prj/uboot/u-boot-2010.06/common//home/xxx/create_prj/uboot/u-boot-2010.06/lib/crc32.c /home/xxx/create_prj/out/uboot/common/crc32.c
    arm-hisiv300-linux-gcc: error: /home/xxx/create_prj/out/uboot/common/crc32.c: No such file or directory
    arm-hisiv300-linux-gcc: fatal error: no input files
    compilation terminated.
    make[2]: *** No rule to make target `/home/xxx/create_prj/out/uboot/common/.depend', needed by `/home/xxx/create_prj/out/uboot/common/libcommon.a'.  Stop.
    make[2]: Leaving directory `/home/xxx/create_prj/uboot/u-boot-2010.06/common'
    make[1]: *** [/home/xxx/create_prj/out/uboot/common/bootss2.a] Error 2
    make[1]: Leaving directory `/home/xxx/create_prj/uboot/u-boot-2010.06'
    make: *** [uboot] Error 2makefile编写如下:
    LOCAL_PATH:=$(call my-dir)
    UBOOT_SRC_DIR := $(SDK_TOPDIR)/uboot/u-boot-2010.06
    UBOOT_OUT_DIR := $(SDK_TOPDIR)/out/uboot
    TEST_FLAG := 1.PHONY: uboot
    uboot:
    @echo "start build uboot target"
    mkdir -p $(UBOOT_OUT_DIR)
    ifdef TEST_FLAG
    make -C $(UBOOT_SRC_DIR) O=$(UBOOT_OUT_DIR) ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3518ev200_config
    make -C $(UBOOT_SRC_DIR) O=$(UBOOT_OUT_DIR) ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-
    cp $(UBOOT_OUT_DIR)/u-boot.bin $(SDK_TOPDIR)/tools/uboot_tools
    else
    make -C $(UBOOT_SRC_DIR) ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3518ev200_config
    make -C $(UBOOT_SRC_DIR) ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- 
    cp $(UBOOT_SRC_DIR)/u-boot.bin $(SDK_TOPDIR)/tools/uboot_tools
    endif
    cd $(SDK_TOPDIR)/tools/uboot_tools && ./mkboot.sh reg_info_hi3518ev200.bin u-boot-ok.bin
    mkdir -p $(SDK_TOPDIR)/out/usb
    cp $(SDK_TOPDIR)/tools/uboot_tools/u-boot-ok.bin $(SDK_TOPDIR)/out/usb/uboot
    @echo "Build uboot Done"
      

  2.   

    源目录下可以编译通过,问题肯定能解决你提供的信息不够:
    uboot code 存放的top path 你放在/home/xxx/create_prj/uboot/u-boot-2010.06了 ?输入文件没有,我认为是这个文件不存在 /home/xxx/create_prj/out/uboot/common/crc32.c ,这个path 的文件在你的编译环境中没有吧?同时你确定在uboot 顶层目录下build ,使用O= 或者build dir配置成某个目录,编译 可以通过?
      

  3.   

    用-C指定源码目录或者直接进到uboot顶层目录去编译是可以通过的,但是用O=指定输出目录后就不行,我也看了,上面ln -s时,crc32.c文件的目录是不对的,前面重复了,所以找不到输入文件,但是,我不知道为什么会多一层目录