g ++: ошибка: не распознано '-std = c ++ 17' (что такое версия g ++ и как ее установить) - PullRequest
0 голосов
/ 21 февраля 2020

Я работаю над RHEL 7.5 и пытаюсь скомпилировать код uWebSocket ( Это пример ). Я клонирую проект и открываю его. Когда я запускаю make в Makefile, я получаю эту ошибку;

BroadcastingEchoServer uSockets/*.o -lz;
g++: error: unrecognized command line option '-std=c++17'
make: [examples] Error 1>

Основная проблема в том, что -std = c ++ 17 не распознается. Как я могу контролировать, какая у меня версия c ++ (эта 17 в конце) и как я могу установить требуемую версию.

gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
Copyright (C) 2015 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.

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

RHEL предоставляет более новые версии G CC, дополнительно используя так называемые коллекции программного обеспечения (SCL). В вашем случае вы можете включить этот репозиторий (в зависимости от того, есть ли у вас рабочая станция или подписка на сервер):

  • subscription-manager repos --enable rhel-server-rhscl-7-rpms
  • subscription-manager repos --enable rhel-workstation-rhscl-7-rpms

После этого вы можете установить один (или несколько) из следующих пакетов:

  • yum install devtoolset-6-gcc-c++ (G CC 6.3.1)
  • yum install devtoolset-7-gcc-c++ (G CC 7.3.1)
  • yum install devtoolset-8-gcc-c++ (G CC 8.3.1)
  • yum install devtoolset-9-gcc-c++ (G CC 9.1.1)

Примечание что вы можете установить весь набор devtoolset указанной c версии, используя, например, yum install devtoolset-9-toolchain. Это может понадобиться (или нет) в зависимости от вашего c варианта использования.

После установки, например, запустить scl enable devtoolset-9 bash при установке devtoolset-9-gcc-c++. Вызов g++ приведет к G CC 9.1.1. Для сценариев использование . /opt/rh/devtoolset-9/enable перед использованием g++ может быть более удобным.

Если необходимо, см. Как сохранить Red Hat Software Collection после перезагрузки / выхода из системы? in База знаний Red Hat.

0 голосов
/ 21 февраля 2020

g cc (G CC) 4.8.5

  • C ++ 17 не поддерживается G CC v4.8.

  • C ++ 17 не поддерживается G CC v4.9.

  • C ++ 17 поддерживается G CC v5 , но вам нужно -std=c++1z:

    Следующий пересмотр стандарта ISO C ++, ориентировочно запланированный на 2017 год. Поддержка носит весьма экспериментальный характер и почти наверняка изменится в несовместимые пути в будущих выпусках.

    G CC v5 был выпущен в 2015 году, и тогда у них еще не было машин времени; o)

  • То же самое относится для G CC v6 и G CC v7 (выпущено в 2016 и 2017 годах).

  • C ++ 17 поддерживается G CC v8 с помощью -std=c++17 ( и -std=c++1z, который с тех пор считается устаревшим).

Для диалектов GNU-C ++ используйте -std=gnu++* вместо -std=c++*.

Следовательно, для серьезных проекты, вы должны использовать G CC v8 или новее.

...