从源代码编译 g++ 会导致标准库损坏。错误:“::realloc”尚未声明

从源代码编译 g++ 会导致标准库损坏。错误:“::realloc”尚未声明

我需要在 Amazon Linux 上运行,但我需要最近的g++.我g++按照说明从源代码编译了 5.3.0这里。编译在 EC2 实例上运行了 13 个小时并成功完成。

然后我能够编译一个小型测试程序并运行它。当我然后去编译一个更大的计划,我收到的错误似乎表明标准库已损坏:

In file included from /usr/local/include/c++/5.3.0/ext/string_conversions.h:41:0,
                 from /usr/local/include/c++/5.3.0/bits/basic_string.h:5251,
                 from /usr/local/include/c++/5.3.0/string:52,
                 from /usr/local/include/c++/5.3.0/stdexcept:39,
                 from /usr/local/include/c++/5.3.0/array:38,
                 from /usr/local/include/c++/5.3.0/tuple:39,
                 from /usr/local/include/c++/5.3.0/mutex:38,
                 from /usr/local/include/c++/5.3.0/condition_variable:39,
                 from ClientStats.h:11,
                 from ClientStats.cpp:10:
/usr/local/include/c++/5.3.0/cstdlib:153:11: error: ‘::realloc’ has not been declared
   using ::realloc;
       ^

我还需要编译或升级其他东西才能拥有可用的标准库吗?

答案1

我知道这个问题被问到已经有四年了,但我今天遇到了这个问题。我在旧的 macbook pro 上从源代码编译了 gcc 11.2.0,以便访问最新的 C++ 功能。在包含某些像这样的标题后,<algorithm>我会得到奇怪的错误,看起来就像OP的错误一样。

我的问题是我已将 include path 添加到我的 C++ 标志中-I/usr/include,其中包含系统内置旧 C++ 标准标头的标头。这与我的新编译器发生冲突。我通过简单地删除这个标志来解决这个问题 - 在我的例子中这是没有必要的。

相关内容