我正在使用 RHEL 7.5 并尝试编译 uWebSocket(示例)代码。 我克隆项目并打开它。 当我在 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.

谢谢

#1楼 票数:2

海湾合作委员会(海湾合作委员会)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 年发布)。

  • GCC v8 通过-std=c++17 (以及从那时起已弃用的-std=c++1z )支持 C++17。

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

因此,对于严肃的项目,您应该使用 GCC v8 或更新版本。

#2楼 票数:1

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)

请注意,您可以使用例如yum install devtoolset-9-toolchain特定版本的整个 devtoolset。 这可能需要(或不需要),具体取决于您的特定用例。

安装后,在安装devtoolset-9-gcc-c++时运行例如scl enable devtoolset-9 bash 调用g++将导致 GCC 9.1.1。 对于脚本,使用. /opt/rh/devtoolset-9/enable 在使用g++之前. /opt/rh/devtoolset-9/enable可能更方便。

如果需要,请参阅如何在重新启动/注销后保留 Red Hat 软件集合? 在红帽知识库中。

#3楼 票数:0

用:

yum install devtoolset-9-toolchain
scl enable devtoolset-9 bash

  ask by hhilal translate from so

未解决问题?本站智能推荐:

1回复

错误:在RHEL上安装pycrypto时,命令'gcc'失败,退出状态为1

我正在尝试在RHEL上为Python(pycrypto)手动安装Crypto模块。 但是,我似乎总是在运行构建命令(即python setup.py build)后收到此错误: 错误:命令“ gcc”失败,退出状态为1 有谁知道如何解决这个问题?
1回复

在制作和安装gcc时遇到问题

我在安装gcc时遇到问题。 根据以下信息,我在做什么错? 在我没有超级用户访问权限的Linux计算机上,从$HOME/gcc运行以下命令: 这里仅显示几行输出: 尝试做: -j8标志以使用8 cpus 这里仅显示几行输出: 尝试安装: 错误:
3回复

如何在 RHEL 7.4 上安装 gcc 4.9.2

我正在尝试在 Linux 上安装 gcc 和 g++ 4.9.2。 我对 Linux 很陌生,我看到了一些关于如何安装的指南,但每次我遇到另一个问题时。 我的机器上现在没有任何 gcc。 我的 Linux 版本是:Red Hat Enterprise Linux Server release 7.4
2回复

无法在RHEL 7.3上构建最新的libcurl

解决此编译错误的正确方法是什么,这样我可以在RHEL 7.3上安装最新的libcurl? 我已经能够获取最新的openssl,进行构建和安装。 OpenSSL 1.1.1-dev xx XXX xxxx openssl version现已报告OpenSSL 1.1.1-dev xx XX
2回复

C++:错误:无法识别的命令行选项“-std=c++17”

c++: 错误: 无法识别的命令行选项 '-std=c++17' 我正在使用 dlib 库运行练习代码。 它运行直到'cmake',但在'make'过程中出现上述错误。 需要更新gcc吗? gcc 版本如下所示。 gcc (GCC) 4.8.5 20150623(红帽 4.8.5-39)
1回复

如何对g ++警告c ++ 17功能进行静音?

我自己构建了gcc 7来尝试一些新的c ++ 17功能。 当我构建代码时,我看到了数百行警告,说某些功能只有在-std = c ++ 1z时才可用(我已经在构建命令行中指定了-std = c ++ 1z并尝试了gnu ++ 1z也) 我想沉默这个警告。 当使用clang 4时,有一
1回复

将 std::string 转换为 std::wstring 时,C++17 codecvt 抛出“错误转换”

我写了一个名为UString的字符串类,我想要的是可以将std::string转换为std::wstring ,并将std::wstring转换为std::string 。 我在 c++17 中使用 libary,所以我编写了如下代码。 在 UString.h 中: public:
2回复

从boost到std :: experimental以及c ++ 17

我通常使用boost实现一些功能,特别是boost :: filesystem(1.58.0)。 我也对string_view使用std :: experimental(我的编译器尚未将其作为标准包含-g ++ 5.4.0 20160609)。 因为我使用了增强功能,所以我想准备好使