gpt4 book ai didi

c++ - 如何在 Gnu C++ (g++) 中使用十进制 float ?

转载 作者:可可西里 更新时间:2023-11-01 18:39:43 27 4
gpt4 key购买 nike

GCC 4.5 在运行时库 (http://gcc.gnu.org/gcc-4.5/changes.html) 中添加了对十进制 float 的支持。我能够编译代码,包括使用命名空间 std::decimal,然后在代码中使用 decimal64 等等。

不幸的是,我缺少一些用于链接代码的库。我一直无法找出应该需要哪些库。在 gcc 中启用 DFP 支持 (--enable-decimal-float=dpd)

此外,是否应该有一些在代码中提供十进制文字的快速方法?快速是指由模板处理并在编译时翻译的用户定义文字。我不想提供在运行时转换的 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。

最佳答案

我最近从源代码编译了 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 会将符号标记为未定义 - 这就是链接器如何知道它需要的。

关于c++ - 如何在 Gnu C++ (g++) 中使用十进制 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000915/

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