当前位置: 技术问答>linux和unix
undefined reference to `__aeabi_unwind_cpp_pr0
来源: 互联网 发布时间:2016-09-15
本文导语: 在uboot中想用yaffs2命令,enable CONFIG_YAFFS2 之后,就出现了错误 : /usr/local/arm-linux-4.1.1/bin/../lib/gcc/arm-iwmmxt-linux-gnueabi/4.1.1/libgcc.a(_divdi3.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0' 不知道这是什么错误? ...
在uboot中想用yaffs2命令,enable CONFIG_YAFFS2 之后,就出现了错误 :
/usr/local/arm-linux-4.1.1/bin/../lib/gcc/arm-iwmmxt-linux-gnueabi/4.1.1/libgcc.a(_divdi3.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
不知道这是什么错误?
我也试过换成GCC-4.3.2,编译是能够通过,但是image烧到板子上之后,很多数字突然都变成了 0 。比如: RAM的数值,nand的timing.
/usr/local/arm-linux-4.1.1/bin/../lib/gcc/arm-iwmmxt-linux-gnueabi/4.1.1/libgcc.a(_divdi3.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
不知道这是什么错误?
我也试过换成GCC-4.3.2,编译是能够通过,但是image烧到板子上之后,很多数字突然都变成了 0 。比如: RAM的数值,nand的timing.
|
先分析一下arm-linux-gcc 4.1.1这个版本的编译器时候无法识别你那个符号。找到起对应的nm工具的路径。
arm-linux-nm /lib/gcc/arm-iwmmxt-linux-gnueabi/4.1.1/libgcc.a | grep T
看看结果有没有出现__aeabi_unwind_cpp_pr0的那一行。如果没有,那就是编译器和要编译的东西有冲突。当中的一个就要作出让步,或者你可以修改其代码。把那个静态库重新做一遍。否则,换arm-linux-gcc版本,或者u-boot的版本。
至于arm-linux-gcc4.3.2出现如此结果,个人认为那个版本的编译器不适合的板子。
|
很明显,__aeabi_unwind_cpp_pr0这个函数不存在或者没有找到。
既然gcc-4.3.2编译能通过,那么建议查查为什么烧到板子上很多数字都变成0了,可能是你赋值的地方不对。
在它默认的初始化动作之前进行了赋值,然后再执行到默认的的初始化动作,就把这些都初始化成0了。
既然gcc-4.3.2编译能通过,那么建议查查为什么烧到板子上很多数字都变成0了,可能是你赋值的地方不对。
在它默认的初始化动作之前进行了赋值,然后再执行到默认的的初始化动作,就把这些都初始化成0了。
|
虽然你只是修改了一些赋值代码,但这个版本的uboot可能就是需要4.3.2版本的gcc,换成4.1.1版本的gcc很可能有一些基本的函数找不到。你先看看你这个版本的uboot中的README文件,里面一般都会有对gcc版本的要求。
|
另外,不知道有没有什么方法能解决4.1.1上的问题?而不是换成4.3.2?
如果你要用4.1.1的交叉工具的话,那你重新做一个4.1.1版本的交叉编译工具吧。
如果你要用4.1.1的交叉工具的话,那你重新做一个4.1.1版本的交叉编译工具吧。
|
你的arm-linux-gcc在哪里,arm-linux-nm就在哪里