g ++:错误:无法识别的'-std = c ++ 17'(什么是g ++版本以及如何安装)

问题描述 投票:0回答:2

我正在使用RHEL 7.5,并尝试编译uWebSocket(This exaple)代码。我克隆项目并打开它。当我在Makefile上启动make时,出现此错误;

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.

谢谢

gcc c++17 rhel7
2个回答
0
投票

gcc(GCC)4.8.5

  • GCC v4.8不支持C ++ 17。

  • GCC v4.9不支持C ++ 17。

  • GCC v5支持C ++ 17,但是您需要-std=c++1z

    ISO C ++标准的下一个修订版,计划于2017年进行。支持是高度试验性的,几乎可以肯定的是,将来的发行版将以不兼容的方式进行更改。

    GCC v5发布于2015年,那时他们还没有时间机器; o)

  • 同样适用于GCC v6和GCC v7(2016年和2017年发布。

  • [C ++ 17由GCC v8通过-std=c++17(以及从那时起不推荐使用的-std=c++1z)支持。

对于GNU-C ++语言,请使用-std=gnu++*而不是-std=c++*

因此,对于大型项目,应使用GCC v8或更高版本。


0
投票

RHEL还使用所谓的软件集合(SCL)提供了更高版本的GCC。您可以启用此存储库(取决于您是否拥有工作站或服务器订阅):

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

之后,您可以安装以下一个或多个软件包:

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

请注意,您可以使用以下方法安装特定版本的整个devtoolset: yum install devtoolset-9-toolchain。根据您的特定用例,可能需要(也可以不需要)。

一旦安装,请运行例如安装scl enable devtoolset-9 bash时的devtoolset-9-gcc-c++。调用g++将转至GCC 9.1.1。对于脚本,在使用. /opt/rh/devtoolset-9/enable之前先使用g++可能会更方便。

如果需要,请参阅Red Hat知识库中的How can I make a Red Hat Software Collection persist after a reboot/logout?

© www.soinside.com 2019 - 2024. All rights reserved.