2012-08-17 29 views
7

GCC 4.5では、ランタイムライブラリ(http://gcc.gnu.org/gcc-4.5/changes.html)の10進浮動小数点サポートが追加されました。私は、namespace std :: decimalを使い、コード内でdecimal64などを使ってコードをコンパイルすることができます。Gnu C++での10進浮動小数点の使い方(g ++)?

残念ながら、コードをリンクするライブラリがありません。私はどのライブラリが必要であるかを知ることができませんでした。 gcc(--enable-decimal-float = dpd)でDFPサポートが有効になっています

また、コードに小数点以下のリテラルを提供するいくつかの方法がありますか?高速では、テンプレートで処理され、コンパイル時に翻訳されるユーザー定義のリテラルを意味します。私は実行時に変換されるdouble型を提供したくありません(パフォーマンスと実際にはコンパイル時から実行時の評価を動かすことはできませんが、まだ丸めの問題があります...)。私はすでに接尾辞 "df"を見つけましたが、それはコンパイラによって認識されないようです。

ターゲットpowerpc-ibm-aix7.1.0.0でgccバージョン4.7.1を使用しています。

リンカのエラーメッセージ:

ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsisd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsidd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsitd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_mulsd3 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_muldd3 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_multd3 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdisd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdisd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdidd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdidd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatditd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsditd 

TIA。

+0

'_Decimal64'のリテラルサフィックスは' dd'( 'df'は' _Decimal32')ですが、コンパイラが後者(DPDルーチンはもちろん)を認識しないことは説明していません。 '--enable-version-specific-runtime-libs'をコンパイラに渡してみましたか? –

+0

コンパイラにそのオプションを渡すことは本当ですか?それは認識されません。 "g ++ -v"はコンパイラ自体が上記のオプションで構成されていることを示しています。 – user1034081

答えて

1

最近、ソースからgcc4.7.1をコンパイルしましたが、シンボル__floatunsidfの紛失に問題がありました。これはlibstdC++。soが必要とするシンボルであり、libgcc_s.soで定義されています。どちらのライブラリもgccによって提供されていることを考えれば、互換性があるはずです。私の場合、私はまだ私のターゲットプラットフォームから解放されたlibgcc_sの古いバージョンにリンカーを含んでいました。その可能性が高いでしょう

# to find out where libstdc++.so is: 
gcc -print-file-name=libstdc++.so 

# see if it references the symbol you're missing 
readelf -a "path to libstdc++.so" | grep "symbol name" 

そして、libgcc_sで同じことをして、どちらも欠けているシンボルを定義しているかどうかを確認してください。 Nb oneはシンボルを未定義とマークします - リンカが必要としていることをどのように知っているか。

関連する問題