ソースからg ++をコンパイルすると、標準ライブラリが破損します。エラー: '::realloc' が宣言されていません。

ソースからg ++をコンパイルすると、標準ライブラリが破損します。エラー: '::realloc' が宣言されていません。

Amazon Linuxで実行する必要がありますが、最新の.dllが必要です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

この質問を受けて4年が過ぎたことがわかりましたが、今日偶然会いました。最新のC ++機能にアクセスするために、古いMacbook Proのソースからgcc 11.2.0をコンパイルしました。このような特定のヘッダーを含めると、<algorithm>OPのエラーのように見える奇妙なエラーが発生します。

-I/usr/include私の問題は、システムに組み込まれている古いC ++標準ヘッダーのヘッダーを含むC ++フラグにインクルードパスを追加したことです。これは私の新しいコンパイラと衝突します。私はこのフラグを削除してこの問題を解決しました。私の場合は必要ありませんでした。

関連情報