Sun C ++ Компиляторы и Boost
-
08-07-2019 - |
Вопрос
В настоящее время я занимаюсь разработкой 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, а не только одну правильную версию, мне неизвестно.