前几天开始学BootLoader,开始在自己的友善之臂Tiny210SDK2的版本子移植u-boot,确碰到一个非常奇怪的错误,在编译u-boot时,老是报/usr/local/include/asm/io.h文件中有未知类型错误,如下:
/usr/local/include/asm/io.h:111:1: 错误: 未知的类型名‘phys_addr_t’
/usr/local/include/asm/io.h:129:34: 错误: 未知的类型名‘phys_addr_t’
/usr/local/include/asm/io.h:174:38: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:175:36: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:176:35: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:182:37: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:317:33: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:326:36: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:328:37: 错误: 未知的类型名‘resource_size_t’
/usr/local/include/asm/io.h:332:1: 错误: 未知的类型名‘bool’
/usr/local/include/asm/io.h:332:35: 错误: 未知的类型名‘pte_t’
make[1]: *** [ublimage.o] 错误 1
百思不得其解,开始以为是我多装了一个交叉编译工具链的环境 ,去掉,然后在环境变量中也删除掉,编译还是报如上错误 ,在网上找到别人编译好的u-boot源码,重新编译,还是一样报这个错误 ,在网上搜索了一把,用Google翻墙出去搜,没有找到任何和我的这个错误有关的信息。昨天晚上,用虚拟机重新装了一个新的干净的ubuntu12.04,然后去/usr/local/include/目录下,结果发现,这个目录下空空如也,什么也没用,再开了一个ubuntu10.04环境,还是一样,什么都没有,既然什么都没有,那这个文件是不是生成的呢,于是切换到root权限下,删除此文件,重新make disclean,然后,重新执行编译命令:
#make tiny210_config
#make
几分钟后,tiny210-uboot.bin顺序编译出来!
重新切换到/usr/local/include/目录下,目录下的asm目录没有再出现,个人推测可能是以前以前编译失败拷贝过来的头文件,OK,编译通过了,遇到错误,先观察思考,再去搜索,网上人云亦云的很多,未必对自己有用,u-boot,继续!