5

我已经为 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 标头,它根据是否定义了 _GLIBCXX_USE_C99_MATH 有条件地定义了 std::signbit。我运行了 cpp -dM ,发现 _GLIBCXX_USE_C99_MATH 没有定义。有没有办法启用 C99 支持?我必须重建 libc 还是这个平台太旧了?我已经脱离了我的元素,所以任何关于让它工作的指导都会很棒。

4

1 回答 1

2

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

Sun Studio 12 用户指南

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

于 2015-02-10T16:00:19.433 回答