最近在移植uboot支持NANDFLASH时,遇到一个错误。烦了两天,终于找到了!具体报错如下。

make[1]: *** No rule to make target '.depend.s3c2440_nand', needed by '.depend'.  Stop.make[1]: Leaving directory '/work/system/u-boot-2012.04.01/drivers/mtd/nand'Makefile:485: recipe for target 'drivers/mtd/nand/libnand.o' failed
make: *** [drivers/mtd/nand/libnand.o] Error 2

  大概意思就是:在链接libnand.o时找不到s3c2440_nand的依赖文件。
  后来仔细检查了makefile,确保了已经在makefile中添加了
s3c2440_nand.c的依赖文件。如图:
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make
  接着考虑是不是代码写错了。对照自己修改的部分如下:
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_02
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_03
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_04
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_05
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_06
  检查好几遍发现代码并没有错。宏开关也都打开了 ,初始化,内存,寄存器等都配置了。仔细一想,如果是代码错误,编译不应该报这样的错误。
  google时参考了几篇文章,解决办法都不相同,但是问题都是出在makefile
。最后确定就是makefile的原因,可能自己没有发现。
http://blog.csdn.net/vblittleboy/article/details/21012991
http://blog.csdn.net/roserose0002/article/details/38397537
  仔细看了s3c2440_nand.c文件名也没写错。
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_07
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_08
  接着我重新复制windows下的文件的名字到makefile下,更改.o依赖的名字发现是多了一个空格
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_09
  第一次修改时,没注意到这个空格,所以我就删去了。今天才发现这里有问题,接着删去windows下的文件和ubuntu下makefile的空格符号,编译就通过了。
make[1]: *** No rule to make target ‘.depend.XXXX‘, needed by ‘.XX‘.  Stop.解决_make_10
  太大意了。这个错误困扰了两天。第一天仔细检查了代码,google找资料,没有解决。今天再拿出来看,才发现这个错误。有时候错误并不能一眼看出来。换个时间,再回来看或许有不一样的结果!