一.问题背景
向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 版权协议,转载请附上原文出处链接和本声明。