Sun C++ Компиляторы и Boost

В настоящее время я работаю над OpenSolaris 2009-06. Документация Boost::MPL, по-видимому, предполагает, что солнечные компиляторы не поддерживаются (последний раз документ обновлялся в 2004 году). Документация верхнего уровня Boost, кажется, предполагает, что поддерживаются компиляторы Sun версии 5.10 и выше - я думаю, что это общий уровень поддержки или он включает MPL? У кого-нибудь есть какие-либо подробности о состоянии соответствия C++ компиляторов sun 5.10?

Я всегда мог скомпилировать с помощью GCC.

3 ответа

Решение

Я думаю, поскольку точный ответ не был предоставлен, я должен опубликовать его сам.

opensolaris (2009.06) и boost-1.4.1, кажется, работают хорошо. ./bjam выбирает правильные переключатели и boost::mpl Кажется, хорошо работает с компилятором Sun. Так что, насколько я могу судить, документация mpl по поддержке компилятора устарела.

У меня был некоторый успех с компилятором Boost и Sun CC на Solaris 10, но это неприятно. Главное помнить, что вам нужно,

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

в вас CXXFLAGS для всего, что вы компилируете, все библиотеки только на основе шаблонов, которые я пробовал, похоже, прекрасно с этим работают (пропустите все библиотеки, которые нуждаются в компиляции, подробности см. здесь)

Это, конечно, означает, что вам придется перестраивать любые библиотеки, на которые вы хотите сослаться (вам очень повезет, если они уже использовали stlport4).

К сожалению, это единственная (ненадежно) действительная причина не использовать Boost:-(

Блог Sun C++ о внешнем интерфейсе

Я сам боролся с этой проблемой в прошлом, и это боль в тылу.

Чтобы быть более точным в ответе Криса Хуанга-Ливера, вам действительно нужно использовать STLPort4 на компиляторах Sun. STL по умолчанию, поставляемый Sun, является неполным, согласно их собственной документации (я буду отслеживать его в некоторый момент). Другие варианты, которые упоминает Крис, полезны, но на самом деле они не являются корнем проблемы.

Хорошей новостью является то, что Sun также поставляет STLPort версии 4 со своими компиляторами, поэтому все, что вам нужно, это включить флаг "-library=stlport4", чтобы переключиться на него. Почему я поставляю две версии (одну полуразбитую) STL, а не одну правильную версию, мне не понятно.

Другие вопросы по тегам