打印

编译uclinux时的软浮点问题

[复制链接]
2572|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

粉丝