如何在Solaris 8 SPARC上启用_GLIBCXX_USE_C99?

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头文件,发现它有条件地定义了std::signbit,具体取决于_GLIBCXX_USE_C99_MATH是否被定义。我运行了cpp -dM命令,发现_GLIBCXX_USE_C99_MATH没有被定义。有没有一种方法可以启用C99支持?我需要重新构建libc吗,还是这个平台太旧了?由于我不是专业人士,如果能提供任何关于如何解决此问题的指导,我将不胜感激。

Solaris 8于2000年2月发布,现在已经过了支持生命周期的结束期限。它对于今天的任何事情来说都太老了。 - alanc
1个回答

2
您的平台C库可能太旧,无法支持C99 FP库的新增内容。
来自 Sun Studio 12 用户指南
注意 - 尽管编译器默认支持以下C99的功能,但由Solaris软件提供的标准头文件在/usr/include中尚未符合1999年ISO/IEC C标准。如果遇到错误消息,请尝试使用-xc99 = none来获取这些头文件的1990年ISO/IEC C标准行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接