最近在移植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的依赖文件。如图:
接着考虑是不是代码写错了。对照自己修改的部分如下:
检查好几遍发现代码并没有错。宏开关也都打开了 ,初始化,内存,寄存器等都配置了。仔细一想,如果是代码错误,编译不应该报这样的错误。
google时参考了几篇文章,解决办法都不相同,但是问题都是出在makefile
。最后确定就是makefile的原因,可能自己没有发现。
http://blog.csdn.net/vblittleboy/article/details/21012991
http://blog.csdn.net/roserose0002/article/details/38397537
仔细看了s3c2440_nand.c文件名也没写错。
接着我重新复制windows下的文件的名字到makefile下,更改.o依赖的名字发现是多了一个空格
第一次修改时,没注意到这个空格,所以我就删去了。今天才发现这里有问题,接着删去windows下的文件和ubuntu下makefile的空格符号,编译就通过了。
太大意了。这个错误困扰了两天。第一天仔细检查了代码,google找资料,没有解决。今天再拿出来看,才发现这个错误。有时候错误并不能一眼看出来。换个时间,再回来看或许有不一样的结果!