Gcc __此目标不支持float128

Gcc __此目标不支持float128,gcc,cygwin,clang,gnu,llvm-gcc,Gcc,Cygwin,Clang,Gnu,Llvm Gcc,我正试图通过cygwin在windows上安装sentry服务器。安装时失败,错误如下: /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> ^

我正试图通过cygwin在windows上安装sentry服务器。安装时失败,错误如下:

/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>
                                  ^
现在在调查它时,我发现它与仅在select目标上支持“_float128”的clang问题有关,即在3.9.0之前,clang不支持_float128,而在3.9.0之前,它将类型别名定义为一种解决方法

从3.9.0开始,clang实现了本机浮动128支持,并且删除了别名解决方案。目前唯一支持浮动128的目标是linux x86和i686

因此,我的问题是,有什么办法可以消除这个错误吗?

在我的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的值不会有帮助,因为其他宏检查它的存在,而不是值


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

找到文件bits/c++config.h并对其进行编辑,使其将_GLIBCXX_USE_FLOAT128定义为0,而不是1。使用-std=c++XX而不是-std=gnu++XX进行编译也可以工作。或者使用-stdlib=libc++而不是libstdc++。@marglisse我将_GLIBCXX_USE_FLOAT128编辑为0,但没有帮助。你能告诉我如何用-std=c++XX而不是-std=gnu++XX m来编译,或者用-stdlib=libc++而不是libstdc++Oups来编译吗?对不起,你需要用undef\u GLIBCXX\u use\u FLOAT128来替换它,而不是将它定义为0。@marglisse它不起作用。如果不起作用,你可能做错了。如果您要求编译器预处理文件标志-E,也可能是-dD,您可以检查包含的文件c++config.h是否是您编辑的文件,以及类型_中发生的情况。