私はFPUを持たない組み込みシステム用のソフトウェアを扱っています。より現実的なパフォーマンスの見通しを得るために、デスクトップにソフトウェア浮動小数点ライブラリを使用してこのソフトウェアを構築したいと考えています。どのようにこれを達成するためのアイデアを誰も持っていますか?x86_64のソフトフロート
これまでのところ、gccで-msoft-float
を使用することで大きな進展はありませんでした。私は現在clangを使っています。フラグ-Xclang -msoft-float -Xclang -no-implicit-float
を使用し、ソフトフロートルーチンの実装を持つライブラリを指定することで、私のアプリケーションをコンパイルすることができます。私はそれを実行しようとすると、それは常にsegfaults。このプログラムが依存しているライブラリは、ソフトフロートでコンパイルされていないためです。このアプリは、gtk、sqlite、expat、gcrypt、多数の内部ライブラリ、およびlibcに依存しています。
ソフトフロートサポートを備えた完全なビルド環境を構築する方法を知りたいと思います。私はuclibcのbuildrootを試して、CC
とCXX
をclangのバイナリに設定しましたが、これはgccツールチェーンをコンパイルするための要件(コンパイラのバージョンが間違っていると不平を言うautotoolsのようなもの)のために動作しませんでした。私は新しいビルドルートでコンパイラとしてclangを使用したいので(ソフトフロートをサポートするために)、gccをビルドする必要はありません。 gccなしでこれを行うことは可能ですか?
私は 'x86_64' ABIが存在すると登録xmm''必要があるため、これは、コードを変更することなしには不可能だと思います。とにかく 'gcc'が必要とする' mpfr'ライブラリを使って、 '-Ddouble = mpfr :: real'というトリッキーな作品が動作するかもしれません。 – hirschhornsalz
注記したように、 'clang'は、浮動小数点命令またはレジスタへの参照なしでバイナリをコンパイルすることができました。このようなものを使ってツールチェーン全体を作る方法があるのなら、私の本当の疑問があると思います。 –
提案されたソリューションはOKですか? –