下载的 tekkamanninja-U-boot-2009.11_tekkaman 源代码编译时出现 undefined reference to `dm9000_initialize' 等一系列错误,
经过多次编译常识终于找到原因 是交叉编译器的引起的问题
1 出现问题情况
github下载源代码后直接编译,由于 Makefile 中 定义的交叉编译器为
160行 CROSS_COMPILE = arm-9tdmi-linux-gnu-
而一般使用的是 arm-linux- 交叉编译器,当提示错误时我修改了 CROSS_COMPILE = arm-linux-
然后在继续make clean , make
出现 undefined reference to `dm9000_initialize' 等一系列错误
在网上找了很多,也没有发现原因
于是决定从新解压源代码,然后直接就修改Makefile 中关于交叉编译器的定义
然后 make 2440_onfig , make
居然没有错误了
重复尝试了几次都可以顺利通过编译
感觉很奇怪
2 我对问题的理解
除了修改Makefile的顺序不同,其他的操作都一样,于是猜想可能是交叉编译器arm-9tdmi-linux-gnu- 与 arm-linux- 的问题
之后进行了多次常识,发现只要先修改Makefle中的 CROSS_COMPILE 然后在编译就不会出错
如果下载后没有修改Makefile,而是等待make出现错误后再去查看 CROSS_COMPILE 的定义,发现不是arm-linux,在进行修改。
之后无论是 make clean && make ,还是 从新配置了再make 都会出现类似的错误。
3 总结
由于我是菜鸟,刚刚学习uboot,对于交叉编译器等很多都不了解。
不清除问题的具体原因,但是至少知道了如果避免这个错误的出现。希望以后升入学习能够解释。