此目标不支持__float128

时间:2017-04-10 06:48:05

标签: gcc cygwin clang gnu llvm-gcc

我正在尝试通过cygwin在Windows上安装哨兵服务器。在安装时,它会因错误而失败:

/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include/c++/type_traits:311:39: error: __float128 is not supported on this target
struct __is_floating_point_helper<__float128>
                                  ^

现在在调查它时,我发现它与clang只支持'__float128'仅选择目标的问题有关,即在3.9.0之前clang不支持__float128在3.9.0之前,它将类型别名定义为变通方法。

从3.9.0 clang实现本机__float128 support开始,删除了别名解决方法。目前支持__float128的唯一目标是linux x86_64 and i686

因此我的问题是,是否有任何解决方案可以消除此错误?

1 个答案:

答案 0 :(得分:3)

在我的cygwin64中,

$ grep -r _GLIBCXX_USE_FLOAT128 /usr /lib
/usr/include/boost/config/compiler/gcc.hpp:#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__)
/usr/include/boost/math/tools/config.hpp:#if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__) \
/usr/include/boost/multiprecision/detail/number_base.hpp:#if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__)
/usr/lib/gcc/x86_64-pc-cygwin/6.3.0/include/c++/x86_64-pc-cygwin/bits/c++config.h:#define _GLIBCXX_USE_FLOAT128 1
/lib/gcc/x86_64-pc-cygwin/6.3.0/include/c++/type_traits:#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128)
/lib/gcc/x86_64-pc-cygwin/6.3.0/include/c++/x86_64-pc-cygwin/bits/c++config.h:#define _GLIBCXX_USE_FLOAT128 1

因此,更改_GLIBCXX_USE_FLOAT128的值无济于事,因为其他宏检查其存在,而不是值。

解决方案是从_GLIBCXX_USE_FLOAT128删除包含c++config.h的行。