2

私はPowerPcのシステムコールの実装に取り​​組んでいます。私はいくつかのgcc関数をテストしましたが、それらはすべて機能しているようです(たとえば、sqrt sin cos pow printf malloc ...)

最近、printfに問題があることに気づきました。integer / charを出力する限りは正常に機能しますが、f%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

また、スタック/ヒープに十分なスペースがあるので、問題がないこともわかっています。 floatを印刷するときにprintfがクラッシュする理由はまだありますか?

4

1 に答える 1

3

newlibは、おそらく浮動小数点IOをサポートせずにビルドされています。これは、多くのコードスペースを節約するため、組み込みシステムではかなり一般的です。おそらく、浮動小数点IOをサポートするためにnewlibを再構築できます。構成オプションはとだと--enable-newlib-io-float思います--enable-newlib-io-long-double。を実行することで、おそらく確実に見つけることができます./configure --help

于 2011-07-30T21:14:35.403 に答える