Cygwin boost поставляется с новым g ++, который, кажется, нарушает мой код ... почему? - PullRequest
0 голосов
/ 08 сентября 2010

Настройка: Я установил Cygwin с линейкой программирования GNU (gcc, g ++, make и gdb) и успешно скомпилировал прогон программы, над которой я работал.Тогда я решил установить boost в Cygwin, потому что мне нужно будет использовать типичные надстройки при разработке моей программы.Итак, используя Cywing setup.exe, я установил boost.После этого программа, которую я только что успешно скомпилировал и запустил, больше не работала.(И помните, что это не зависело от boost.)

Я обнаружил, что при установке boost он также устанавливал новый компилятор g ++ - 4.exe, тогда как ранее я использовал r ++ - 3.EXE.Boost также символически связал g ++. Exe с новым компилятором.После того, как я вернул символическую ссылку, моя старая программа скомпилировалась правильно.

Есть ли причина, по которой я должен использовать g ++ - 4, а не g ++ - 3?

1 Ответ

1 голос
/ 08 сентября 2010

g ++ 3 очень старый, и сообщество gcc уже давно отказалось от его обслуживания.(GCC 4.3 в настоящее время является самой старой поддерживаемой версией выпуска .) В новых версиях было много улучшений соответствия языков (как при принятии действительного кода, так и при отклонении плохого кода), так что вам будет легче работатьвперед, если ты сейчас укусишь пулю.Вы можете проверить примечания к выпуску для каждой серии (например, для 4.0 ) для объяснения этих улучшений и изменений кода, которые могут им потребоваться.Лично я нахожу программирование намного более приятным, когда я могу рассуждать о программах в соответствии с точной спецификацией языка, и лишь изредка вынужден понимать причуды конкретного компилятора.

Кроме того, поддержка Boost для g ++ 3, кажется,близится к концу, так как Boost 1.44 рассматривает GCC 3 (.4.6) как «дополнительный тестовый компилятор» только на одной платформе (RHEL).Ускоренная разработка является линейной (не разветвленной), поэтому вы можете оказаться в ситуации, когда вам нужно обновить систему, чтобы получить исправления ошибок, но затем обнаружите, что ваша платформа больше не поддерживается.

...