gpt4 book ai didi

embedded - 使用 printf 打印 float/double 会使程序崩溃

转载 作者:行者123 更新时间:2023-12-04 06:18:41 28 4
gpt4 key购买 nike

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

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

我检查了makefile,它使用:

# use soft float
CFLAGS += -msoft-float

在制作程序时,我可以看到很多 编号 (无 float )正在链接的库。
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 打印 float 时应该崩溃吗?

最佳答案

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

关于embedded - 使用 printf 打印 float/double 会使程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873522/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com