我正在为 PowerPc 开展系统调用实施。 我已经测试了一些gcc函数,它们似乎都可以工作(例如sqrt sin cos pow printf malloc ...)
我最近意识到 printf 存在问题。只要我打印一些整数/ char它就可以正常工作但是当我尝试printf %f / lf 来打印float / double时程序崩溃了。 (它似乎在不应该执行的某个地方执行)
我检查了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 应该崩溃还有原因吗?
答案 0 :(得分:3)
你的newlib可能是在不支持浮点IO的情况下构建的。这对于嵌入式系统来说相当普遍,因为它节省了大量代码空间。您可以重建newlib以支持浮点IO。我认为配置选项为--enable-newlib-io-float
和--enable-newlib-io-long-double
。您可以通过运行./configure --help
来确定。