出人意料的是,作爲該代碼是在一個名爲soft-fp
目錄內的源提供明確的gcc不支持此本身。有可能手動編譯該庫:
$ svn co svn://gcc.gnu.org/svn/gcc/trunk/libgcc/ libgcc
$ cd libgcc/soft-fp/
$ gcc -c -O2 -msoft-float -m32 -I../config/arm/ -I.. *.c
$ ar -crv libsoft-fp.a *.o
有幾個c文件由於錯誤而無法編譯,但大多數都是編譯的。複製libsoft-fp.a
與我們的源文件所在的目錄後,他們現在編譯罰款與-msoft-float
:
$ gcc -g -m32 -msoft-float test.c -lsoft-fp -L.
使用
$ objdump -D --disassembler-options=intel a.out | less
快速檢查表明,由於預期沒有的x87浮點指令被稱爲和代碼運行在我的例子中,使用大量的除法,相當慢,也是8倍。
注:我會一直用最好
$ gcc -c -O2 -msoft-float -m32 -I../config/i386/ -I.. *.c
編譯軟浮點庫,但導致的錯誤消息的負載,如
adddf3.c: In function '__adddf3':
adddf3.c:46: error: unknown register name 'st(1)' in 'asm'
好像i386
版本st(1)
指向使用-msoft-float
時明顯不可用的x87寄存器之一,因此沒有得到很好的維護。 奇怪或幸運的是,arm
版本編譯罰款上i386
,似乎工作得很好。
感謝您的回覆。我試圖引導uClibc的使用buildroot的,但它似乎被忽略我只要BR2_UCLIBC_CONFIG下,至少在UCLIBC_HAS_FPU選項的.config:/ – bdonlan 2009-06-19 18:07:47
@Alex的uClibc的工具鏈鏈接斷開。 http://uclibc.org/toolchains.html應該是合適的? – zengr 2012-01-14 14:50:31