编译uclinux时的软浮点问题

[复制链接]
3030|3
 楼主| xparmenides 发表于 2013-2-7 22:48 | 显示全部楼层 |阅读模式

今天从网上下载了arm-linux-tools-20031127,gcc版本是3.3.2。然后,有下载了uClinux-dist-20100628.tar.bz2。在编译过程中,内核和uclibc都遇到一些问题,但都跳过去了。然而在编译应用程序时出现很多类似下面的提示信息:
ucfront-gcc arm-linux-gcc  -O2 -g -fomit-frame-pointer -pipe -msoft-float -fno-common -fno-builtin -Wall   -DEMBED -Dlinux -D__linux__ -Dunix -D__uClinux__ -D_BSD_SOURCE=1   -c -o client.o client.c
/usr/local/lib/gcc-lib/arm-linux/3.3.2/../../../../arm-linux/bin/ld: ERROR: /usr/local/lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivsi3.o) uses hardware FP, whereas inetd uses software FP
根据提示信息不难看出,问题在于arm-linux-gcc提供的libgcc.a静态库中包含的是硬浮点指令(由协处理器执行),而在用arm-linux-gcc编译应用程序时,命令行上指定了-msoft-float选项,因此应用程序中将采用软浮点指令。这样libgcc.a与应用程序目标文件就无法链接了。我的想法是:
1. 去掉uclinux应用程序编译选项-msoft-float,于是用find命令在所有Makefile中找包含字符串"msoft-float"的文件,但没有找到。(在编译内核时也出现过类似的情况,但用这种方法就可以找到)。因此,如何才能去掉这个编译选项呢?

2. 用包含软浮点指令的arm-linux-gcc,是否有这种编译器呢?
brandnew 发表于 2013-2-9 15:12 | 显示全部楼层
1.去软浮点,肯定可以,根目录Makefile里面,一个编译参数而已,只是不知道后果如何,可以研究研究。
2.有这样编译器,换其它版本的编译器,有支持软浮点的。
楼主,怎么玩起这古董了?
李富贵 发表于 2013-2-9 22:45 | 显示全部楼层
用10年前的编译器,楼猪我太葱白你乐
 楼主| xparmenides 发表于 2013-2-14 21:38 | 显示全部楼层
搞定了,是编译器版本的问题,好像gcc 3.4.4以下版本不支持软浮点。用crosstool制作了一个基于gcc 3.4.5的交叉工具链就可以顺利编译了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部