簡體   English   中英

如何在Gnu C ++(g ++)中使用十進制浮點?

[英]How to use decimal floating point in Gnu C++ (g++)?

GCC 4.5在運行時庫中增加了對十進制浮點的支持(http://gcc.gnu.org/gcc-4.5/changes.html)。 我能夠編譯代碼,包括使用命名空間std :: decimal,然后在代碼中使用decimal64等。

不幸的是,我缺少一些用於鏈接代碼的庫。 我無法找出應該要求哪些庫。 已在gcc中啟用DFP支持(--enable-decimal-float = dpd)

另外,是否應該有一些快速的方法在代碼中提供十進制文字? 快速,我的意思是用戶定義的文字,由模板處理並在編譯時翻譯。 我不想提供在運行時轉換的雙精度數(盡管性能和事實上我真的無法將評估從編譯時間轉移到運行時仍存在舍入問題......)。 我已經找到了后綴“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。

我最近從源代碼編譯了gcc4.7.1並且遇到了缺少符號__floatunsidf的問題。 這結果是libstdc ++所需的符號。所以在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將符號標記為未定義 - 這就是鏈接器如何知道它所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM