2

我目前正在 OpenSolaris 2009-06 上进行开发。Boost::MPL 文档似乎暗示不支持sun 编译器(该文档最后更新于 2004 年)。Boost 的顶级文档似乎表明支持 sun 编译器 5.10 及更高版本——我想这是一般级别的支持,还是包括 MPL?有没有人有关于 sun 5.10 编译器的 C++ 一致性状态的详细信息?

我总是可以使用 GCC 进行编译。

4

3 回答 3

3

我在 Solaris 10 上使用 Boost 和 Sun 的 CC 编译器取得了一些成功,但这很痛苦。要记住的主要事情是你需要,

 -library=stlport4 -features=tmplife -features=tmplrefstatic

在 CXXFLAGS 中为您编译的所有内容,我尝试过的所有仅模板库似乎都可以正常工作,(跳过所有需要编译的库,有关详细信息,请参见此处

当然,这确实意味着您必须重新构建您需要链接到的任何库(如果他们已经使用了 stlport4,您将非常幸运)。

可悲的是,这是不使用 Boost 的唯一(微不足道的)正当理由 :-(

Sun C++ Frontend 博客

于 2009-11-30T11:35:33.200 回答
2

过去我自己也解决过这个问题,这让我很痛苦。

为了更具体地了解 Chris Huang-Leaver 的回答,您确实需要在 Sun 编译器上使用 STLPort4。Sun 提供的默认 STL 是不完整的,根据他们自己的文档(我会在某个时候追踪它)。Chris 提到的其他选项很有帮助,但它们并不是问题的根源。

好消息是 Sun提供 STLPort 版本 4 及其编译器,因此您只需包含“-library=stlport4”标志即可切换到它。为什么他们提供 STL 的两个版本(一个半损坏),而不仅仅是一个正确的版本,我无法理解。

于 2009-11-30T14:38:01.157 回答
1

我想由于没有提供确切的答案,我必须自己发布一个。

opensolaris(2009.06) 和 boost-1.4.1 似乎运行良好。选择正确的./bjam开关,boost::mpl似乎与现有的 sun 编译器配合得很好。所以,据我所知,关于编译器支持的 mpl 文档已经过时了。

于 2009-12-09T18:48:58.880 回答