解决编译TQ2416 uboot报错:undefined reference to `__aeabi_unwind_cpp_pr0'的问题,更换编译器无用,重做编译器也无法解决。最后发现当用一个long long类型(64位)的变量做除法运算时时就会报此错误, 网上有人说armv5te没有除法指令集导致,我认为不是,而是longlong是64位数据,编译器肯定是用8个字节来存储,但是2416是32位cpu,不可能执行64位除法,所以我们不要用/符号执行64位除法运算,需要借助除法函数库。因此使用lldiv函数做除法运算即可,或者不要用用64位数据做除法运算(但是有时必须用64位数据,否则计算溢出)。
网上搜出的答案都挺扯的,还说改makefile,arm-linux-gcc加上-nostdlib编译选项,说得头头是道,都是无稽之谈:-)。
阅读(3355) | 评论(0) | 转发(0) |