如何在 Solaris 8 SPARC 上启用_GLIBCXX_USE_C99

How can I enable _GLIBCXX_USE_C99 on Solaris 8 SPARC?

本文关键字:启用 GLIBCXX USE C99 SPARC Solaris      更新时间:2023-10-16

我已经为 Solaris 8 sparc 构建了 gcc 4.6.1。 我正在编译一些使用 boost::lexical_cast(boost 1.48)的代码,但出现此错误:

boost/math/special_functions/sign.hpp: In function 'int boost::math::detail::signbit_impl(T, const boost::math::detail::native_tag&)'
      error: 'signbit' is not a member of 'std'

(fpclassify,isfinite,isnormal,isinf,isnan也有类似的错误)

我查看了 cmath 标头,它根据是否定义了 std::signbit 有条件地定义_GLIBCXX_USE_C99_MATH。 我运行了 cpp -dM,我看到_GLIBCXX_USE_C99_MATH没有定义。 有没有办法启用 C99 支持?我必须重建libc还是这个平台太旧了? 我已经超出了我的元素,所以任何关于让它工作的指导都会很棒。

您的平台 C 库可能太旧,无法支持 C99 FP 库的添加。

来自 Sun Studio 12 用户指南:

注意 - 尽管编译器默认支持列出的 C99 的功能 下面,Solaris 软件在 /usr/include 中提供的标准标头 尚未符合 1999 年 ISO/IEC C 标准。如果错误消息是 遇到,尝试使用-xc99=none获取 1990 ISO/IEC C 标准 这些标头的行为。