undefined reference to `__aeabi_unwind_cpp_pr0

alex_gogo 2010-08-02 02:54:53
在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.
...全文
1433 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
alex_gogo 2010-08-02
  • 打赏
  • 举报
回复
OK,解决了!把4.3.2得libgcc.a换到4.1.1中,问题就不存在了,但是不知道这样有没有什么不好的副作用?
alex_gogo 2010-08-02
  • 打赏
  • 举报
回复
nm之后,__aeabi_unwind_cpp_pr0是 Undefine的。看来我需要重新编一个4.1.1的GCC了。
wwwunix 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 alex_gogo 的回复:]

引用 5 楼 linwhwylb 的回复:

引用楼主 alex_gogo 的回复:
在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.ex……
[/Quote]
你的arm-linux-gcc在哪里,arm-linux-nm就在哪里
alex_gogo 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 linwhwylb 的回复:]

引用楼主 alex_gogo 的回复:
在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 refer……
[/Quote]

这个.....我不晓得到哪里找你说的nm工具路径....
Linux-Torvalds 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 alex_gogo 的回复:]
在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_unwi……
[/Quote]
先分析一下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出现如此结果,个人认为那个版本的编译器不适合的板子。
Apple_Demo 2010-08-02
  • 打赏
  • 举报
回复
另外,不知道有没有什么方法能解决4.1.1上的问题?而不是换成4.3.2?
如果你要用4.1.1的交叉工具的话,那你重新做一个4.1.1版本的交叉编译工具吧。
wwwunix 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 alex_gogo 的回复:]

多谢,看看是不是赋值顺序的问题。不过这些出错的地方都是uboot本身的code,如果我换成4.1.1就无错。难道是两个编译器对赋值要求不同?
另外,不知道有没有什么方法能解决4.1.1上的问题?而不是换成4.3.2?
[/Quote]
虽然你只是修改了一些赋值代码,但这个版本的uboot可能就是需要4.3.2版本的gcc,换成4.1.1版本的gcc很可能有一些基本的函数找不到。你先看看你这个版本的uboot中的README文件,里面一般都会有对gcc版本的要求。
alex_gogo 2010-08-02
  • 打赏
  • 举报
回复
多谢,看看是不是赋值顺序的问题。不过这些出错的地方都是uboot本身的code,如果我换成4.1.1就无错。难道是两个编译器对赋值要求不同?
另外,不知道有没有什么方法能解决4.1.1上的问题?而不是换成4.3.2?
wwwunix 2010-08-02
  • 打赏
  • 举报
回复
很明显,__aeabi_unwind_cpp_pr0这个函数不存在或者没有找到。
既然gcc-4.3.2编译能通过,那么建议查查为什么烧到板子上很多数字都变成0了,可能是你赋值的地方不对。
在它默认的初始化动作之前进行了赋值,然后再执行到默认的的初始化动作,就把这些都初始化成0了。

4,437

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧