cc1plus: ошибка: нераспознанная опция командной строки «-std = c ++ 11» с g ++

61

Я пытаюсь скомпилировать с помощью g++ и флагов -std=c++11 или c++0x.

Однако я получаю эту ошибку

cc1plus: error: unrecognized command line option "-std=c++11"

g++ --version

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • 3
    это -std=c++0x с g ++
  • 2
    @stefan Неверно, оба возможны. Какую версию GNU вы используете? C ++ 11 поддерживается только в> = 4.3.
Показать ещё 11 комментариев
Теги:
c++11
compiler-errors
g++
std

4 ответа

74
Лучший ответ

Увидев из вашей версии g++, вам нужно ее плохо обновить. С++ 11 доступен только с g++ 4.3. Самая последняя версия - 4.7.

В версиях pre-g++ 4.7 вам нужно будет использовать -std=c++0x, для более поздних версий вы можете использовать -std=c++11.

  • 1
    4.8.0 - это нормально, или в марте выйдет настоящий релиз или что-то в этом роде?
  • 0
    @chris chris Извините, должно быть 4.7, 4.8 все еще в разработке.
Показать ещё 5 комментариев
11

Цитата из gcc-сайта:

Функции С++ 11 доступны как часть компилятора GCC "mainline" в соединительной линии репозитория GCC Subversion и в GCC 4.3 и более поздних версиях. Чтобы включить поддержку С++ 0x, добавьте параметр командной строки -std = С++ 0x в вашу командную строку g++. Или, чтобы включить расширения GNU в дополнение к расширениям С++ 0x, добавьте -std = gnu ++ 0x в вашу командную строку g++. GCC 4.7 и более поздние версии поддерживают -std = С++ 11 и -std = gnu ++ 11.

Возможно, вы используете версию g++, которая не поддерживает -std=c++11. Вместо этого попробуйте -std=c++0x.

Доступность функций С++ 11 предназначена только для версий >= 4.3.

  • 1
    Или вы обновляете свой g ++ ...
  • 1
    Или используйте clang !
Показать ещё 3 комментария
3

вы должны попробовать это

g++-4.4 -std=c++0x or g++-4.7 -std=c++0x
-2

Я также получил ту же ошибку, компиляция с флагом -D исправлена, попробуйте следующее:

g++ -Dstd = С++ 11

  • 0
    Почему это понижено? Что не так с ответом? Почему это не работает?
  • 0
    @Veda для меня по крайней мере (на gcc4.6.3), он определенно не компилировался с c ++ 11. Я написал простую двухстрочную программу с std::vector<int> v = {1, 2, 3}; чтобы проверить, и он выбрасывал всевозможные ошибки над ним (хотя и другие ошибки, чем без флага, достаточно интересно).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню