今天从网上下载了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,是否有这种编译器呢?
|