2

我正在为PowerPc进行系统调用实现。我已经测试了一些 gcc 函数,它们似乎都可以工作(例如 sqrt sin cos pow printf malloc ...)

我最近意识到printf存在问题。只要我打印一些整数/字符,它就可以正常工作,但是当我尝试 printf %f/lf打印浮点/双倍时,程序崩溃了。(它似乎在不应该在的地方执行)

我检查了makefile,它使用:

# use soft float
CFLAGS += -msoft-float

在制作程序时,我可以看到许多nof(无浮点)库被链接。

gnu/powerpc-eabi/3pp.ronetix.powerpc-eabi/bin/../lib/gcc/powerpc-eabi/4.3.3/../../../../powerpc-eabi/lib/nof\libm.a)lib_a-s_sin.o

我也知道我在堆栈/堆中有足够的空间,所以这应该不是问题。 打印浮点数时printf应该崩溃还有一个原因吗?

4

1 回答 1

3

您的 newlib 可能是在不支持浮点 IO 的情况下构建的。这对于嵌入式系统来说相当普遍,因为它节省了大量的代码空间。您可能可以重建 newlib 以支持浮点 IO。我认为配置选项是--enable-newlib-io-floatand --enable-newlib-io-long-double。您可能可以通过运行确定./configure --help

于 2011-07-30T21:14:35.403 回答