最近在移植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的问题,可能是我没有发现。以下是参考的文章:
be仔细检查s3c2440_nand.c的文件名,也确认没有写错。
接着,我重新复制Windows下的文件名到Makefile中,更改.o依赖的名字,发现多了一个空格。
第一次修改时,我没有注意到这个空格,所以我将其删除了。今天才发现这里有问题,接着删除了Windows下的文件和Ubuntu下Makefile中的空格符号,编译就通过了。
真是太大意了。这个错误困扰了我两天。第一天我仔细检查了代码,Google查找资料,但没有解决。今天再次拿出来看,才发现了这个错误。有时候错误并不能一眼看出来。换个时间再回来看,或许会有不一样的结果!