Eclipse Juno CDT: несовместимость с C++11 и проблемы с отладкой

Столкнулся с множеством проблем с последней версией Eclipse Juno в Ubuntu 12.04 после перехода с Indigo.
Я установил следующие флаги в:
Проект -> Свойства -> Сборка C/C++ -> Настройки -> Настройки инструментов -> Кросс-компилятор G++

  • -> Разное: -std=c++11
  • -> Препроцессор: __GXX_EXPERIMENTAL_CXX0X__ (также устанавливается в C/C++ General -> Пути и символы)

В настоящее время я компилирую код, который отлично компилировался с C++03 в Indigo. После перехода на С++ 11 я получил некоторые ошибки, которые, вероятно, были связаны с расширением g++, и я их исправил.

Теперь вот проблемы, которые я хочу исправить:

  1. Если я переключаюсь обратно на обычную компиляцию C++, то получаю единственную ошибку: This file requires compiler and library support for the \ ISO C++ 2011 standard. This support is currently experimental, and must be \ enabled with the -std=c++11 or -std=gnu++11 compiler options. из файла c++0x_warning.h. Ошибка не исчезает даже при чистой сборке или перезапуске eclipse.
  2. Отладка не работает должным образом. Выполнение останавливается в заданных точках останова, но когда я навожу указатель мыши на переменные, он не показывает никаких значений. В Indigo это показывалось. Сделал много проб и ошибок в различных настройках Eclipse, но не повезло. Также проверил, Window -> Preferences -> C/C++ -> Hovers, но не смог ничего там изменить.
  3. Включение <unrodered_map> работает нормально, но если используется std::unordered_map<>, то начинает выдавать ошибку. Пока меня этот вопрос меньше всего волнует среди прочих.

Если кто-нибудь может предложить ссылку или метод для эффективной отладки с помощью Eclipse (Juno), это будет очень полезно и для будущих посетителей.

Примечание. Я упомянул несколько тем в SO, но ни одна из них не помогла:
Eclipse CDT Поддержка C++11/C++0x
Невозможно установить Eclipse Juno C++ с помощью std=c++11
Eclipse CDT Juno: проблема с набором инструментов


person iammilind    schedule 23.04.2013    source источник
comment
Дополнительная информация: Компилятор g++ 4.8.0.   -  person iammilind    schedule 23.04.2013
comment
Отказаться от затмения. Сохранить себя.   -  person mythagel    schedule 23.04.2013
comment
У меня была такая же проблема, дам вам ответ, как только я проверю это сам.   -  person Games Brainiac    schedule 23.04.2013


Ответы (1)


Прежде всего, я начал с новой установки всего этого, и в качестве справочного материала в будущем я хочу показать, как установить и использовать GCC с Eclipse с нуля.

Сначала зайдите в Центр программного обеспечения Ubuntu и загрузите последние версии GCC, то есть GCC 4.8. Теперь у вас могут возникнуть проблемы при этом, поэтому я предлагаю вам ввести gcc-4.8 при попытке найти программное обеспечение. То же самое с g++, вы вводите g++4.8, чтобы получить то, что вы хотите. Убедитесь, что у вас правильные версии. Из-за природы Linux с открытым исходным кодом обычно возникает множество проблем, связанных с версиями.

-> : нажмите ввод

Теперь откройте терминал и введите следующее:

  • sudo su - -> это даст вам специальные привилегии root.
  • Теперь он запросит ваш пароль, введите его ->
  • !Внимание, не делайте ошибок в этой части, т.к. рут может сильно навредить!
  • Теперь измените свой каталог, введите cd /usr/bin ->
  • Введите ls -l gcc* g++* cpp* ->
  • Это покажет вам символические ссылки, доступные для этих типов данных.
  • Введите ln -s g++-4.8 g++->
  • Введите rm cpp gcc ->
  • ln -s gcc-4.8 gcc ->
  • ln -s cpp-4.8 cpp ->
  • Теперь дважды нажмите CTRL + D, и вы выйдете из терминала.

Теперь откройте затмение. Перейдите в «Настройки»> «Мастер создания CDT» (или что-то в этом роде) введите здесь описание изображенияУбедитесь, что выбран Linux GCC . Сделать нажмите Make Toochains preferred. Теперь, когда вы открываете проект, убедитесь, что вы зашли в свойства проекта и сделали следующее:

  • Сборка C/C++ > Настройки > Разное. > Под другими флагами добавить этот -std=c++11. введите здесь описание изображения

  • То же самое с компилятором GCC C, но на этот раз вы добавляете -std=gnu11

Это должно все настроить. Не используйте Cross GCC, это всегда доставляло мне проблемы.

person Games Brainiac    schedule 23.04.2013
comment
Вместо того, чтобы вручную удалять файлы в /usr/bin/, посмотрите на альтернативы обновлению - person mythagel; 24.04.2013
comment
@mythagel: Иногда это доставляло мне проблемы, поэтому я избегал этого и давал человеку возможность делать что-то вручную. - person Games Brainiac; 24.04.2013