编译工具:gcc version 4.3.2 u-boot版本:uboot 1.1.6
开发板:JZ2440
主要问题描述:打完补丁、配置完成后,以4.3.2版本的编译器编译u-boot,出现问题如图所示:undefined reference to `raise'
参考以下方法后问题解决
http://blog.csdn.net/wwd574000815/article/details/6208379
具体如下:
将cpu /arm920t/config.mk 改为
PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
-msoft-float
PLATFORM_CPPFLAGS +=
# =========================================================================
#
# Supply options according to compiler version
#
# =========================================================================
PLATFORM_CPPFLAGS +=$(call cc-option,)
PLATFORM_RELFLAGS +=$(call cc-option,$(call cc-option,))
在uboot的根目录Makefile中的PLATFORM_LIBS 修该为如下值
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc -lc -L/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
然后重新 make distclean make 应就能通过了
注意:在修改过程中请仔细检查,不要敲错,其实用gedit打开可以直接复制是最好的,复制黏贴就好了。如果代码改错的话,会成功编译,但是生成的u-boot.bin 文件运行的时候,串口不会打印信息,亲身体验啊,搞了两天的时间才发现的。
代码写错串口输出如下:
总结:虽然花费了两天的时间,但是还是学到了些东西
1:gcc 版本的显示 arm-linux-gcc -v
2:gcc 编译器的版本更换:解压完成后更改 vim /etc/environment 更改其中的路径,之后还要export PATH = “路径”, 查看环境变量PATH,用 echo PATH 命令
3:find命令 find . -name 文件名 //查找当前目录及子目录中的文件
4:NORFlash中的uboot可以烧写NORFlash,不用jlink。
5:解决问题要细心,切勿急躁。