如何在 RedHat 7.5 上使用带有 gcc 4.8.5 的 C++14 制作

How to use make with C++14 with gcc 4.8.5 on RedHat 7.5

我在 Red Hat 7.5 机器上安装了 gcc 4.8.5。 我想在这台机器上编译一个软件包。 为了编译这个包,我需要 运行 "make"。 但是,当我 运行 这样做时,我看到以下错误消息 "error: ‘make_unique’ is not a member of ‘std’"。 我的理解(可能不正确)是这条消息源于 4.8.5 使用 C++11 而 "make_unique" 需要 C++14。所以我推测编译这个的方法是指定在我运行"make"时应该使用C++14。 我该怎么做?

我尝试将 C++ 设置为 14,如下所示: cmake -G "Unix Makefiles" -D CMAKE_CXX_STANDARD=14

然后我运行"make".

但这给出了相同的错误信息。

您使用的编译器不支持 C++14。如 documentation 中所述:

GCC supports the original ISO C++ standard (1998) and contains experimental support for the second ISO C++ standard (2011).

这并不奇怪,因为 GCC 4.8 最初是在 2013 中发布的,所以如果它实现了一年后引入的标准,那就很奇怪了。

要使用 C++14 甚至 C++17,您可以使用 RH Devtoolset 8 编译它。由于 DTS 编译器的 "nature",构建的软件将 运行 在目标 OS w/o 上进行任何额外的工作:OS 中可用的符号 libstdc++ 将被动态解析,而 C++11 及更高版本将从 DTS 提供的专门构建的静态 libstdc++.a 链接到您的可执行文件。