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:-(
Я сам боролся с этой проблемой в прошлом, и это боль в тылу.
Чтобы быть более точным в ответе Криса Хуанга-Ливера, вам действительно нужно использовать STLPort4 на компиляторах Sun. STL по умолчанию, поставляемый Sun, является неполным, согласно их собственной документации (я буду отслеживать его в некоторый момент). Другие варианты, которые упоминает Крис, полезны, но на самом деле они не являются корнем проблемы.
Хорошей новостью является то, что Sun также поставляет STLPort версии 4 со своими компиляторами, поэтому все, что вам нужно, это включить флаг "-library=stlport4", чтобы переключиться на него. Почему я поставляю две версии (одну полуразбитую) STL, а не одну правильную версию, мне не понятно.