CentOS 7:安装了 devtoolset-7,但 GCC 7.8 正在使用 GCC 4.8 安装的旧 C++ 包含文件

CentOS 7:安装了 devtoolset-7,但 GCC 7.8 正在使用 GCC 4.8 安装的旧 C++ 包含文件

我正在尝试编译并安装开心果在 CentOS 7 机器上,按照他们的说明进行操作。

这是一个需要 C++ 11 的软件包,因此由于 CentOS 7 上的开发工具包安装了不支持 C++ 11 功能的旧版 gcc (4.8.3),因此我安装了 devtoolset-7 并使用 启用了它scl enable devtoolset-7 bash。它似乎运行正常,如gcc --version显示 所示gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

但是,当我尝试makePistache 源时,出现此编译错误:

/root/compiler_installation_script/pistache/src/server/router.cc:102:45: error: no matching function for call to ‘regex_replace(const string&, std::regex&, const char [2])’
     SegmentTreeNode::multiple_slash, "/");
                                         ^
 /root/compiler_installation_script/pistache/src/server/router.cc:102:45: note: candidates are:
 In file included from /usr/include/c++/4.8.2/regex:62:0,

除非我理解错误,否则这似乎表明我的编译器正在使用与 gcc 4.8.3 兼容的过时 C++ 包含头文件,从而导致错误。我该如何修复?

注意:我确信问题不在于 Pistache 源本身,因为我已经在其他机器上成功编译了它,包括昨天的一台全新的 CentOS 7 机器。

答案1

搞清楚了。 使用的是旧版本的 gcc/g++,而不是我自己cmake运行时命令行选择的版本。因此,在运行 cmake 之前,我必须将 CC 和 CXX 导出到适当的路径。gccg++

export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++
cmake3 -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..

以前,我只运行上面的最后一行。

相关内容