交叉编译之__aeabi_uidiv问题

  • Post author:
  • Post category:其他


一.问题背景

向DM6467里面移植live555服务器,采用的交叉编译器是arm_v5t_le-c++ arm_v5t_le-gcc。

二.问题描述

这里写图片描述

三.问题分析

上网找了一些帖子,基本上问题是这样的:

ARM芯片没有实现除法的硬件结构,因此是采用软件去实现除法。编译器支持软浮点,软浮点的实现是在libgcc.a中。

我的Makefile里面没有链接libgcc.a这个静态库,因此程序会取链接libgcc.so(好像是默认这样的,我在Makefile里面也没有找到链接libgcc.so的语句)。使用nm指令观察libgcc.so里面的符号,只看到了__aeabi_uidivmod 而没有看到__aeabi_uidiv,因此才会出现上图示的错误。

四.解决办法

修改Makefile,找到libgcc.a并且将其连接到可执行程序里面去,最后程序就可以正常运行了。



版权声明:本文为messiran10原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。