10

C++ プロジェクトをビルドしようとしていますが、終了すると次のエラーがスローされます。

undefined reference to __cxa_end_cleanup'

使用されるツールチェーンは ARM GCC 4.7.3 で、リンカーのカスタム フラグは次のとおりです。

-mthumb -march=armv6-m -T .\Generated_Source\PSoC4\cm0gcc.ld -g -Wl,-Map,${OutputDir}\${ProjectShortName}.map -specs=nano.specs -Wl,--gc-sections

上記のエラーの一般的な理由は何ですか? また、このエラーを解決するリンカー フラグは何ですか?

4

2 に答える 2

13

未定義のエラーが発生するたびに、ビルド オプションを満たすものをリンクしていません。あなたには3つの選択肢があり、

  1. ビルド オプションを変更します。
  2. ライブラリを提供します。
  3. 代替ライブラリを提供します。
  4. 関数呼び出し/データの使用を避ける[ここでは不可能] .

この場合、Ian Lance Taylorが必要な答えを提供し-lsupc++ます。また、 を使用している場合は、C++ バイナリに適切なライブラリを追加する にgcc切り替える必要があります。g++マニュアルには、さらに詳しい情報が記載されています

深く埋め込まれている場合は、関数を使用して独自のライブラリをコーディングしてみることができます。この場合、参照用にソースを使用できます。__cxa_end_cleanup()機能は、例外条件またはexit(). この機能を使用しない場合は、(自己責任で) 関数をスタブすることができます。しかし、コードはかなり小さく、Cortex-M でも提供されたライブラリにリンクします。

于 2014-07-28T15:56:13.553 に答える
1

リンカー ライブラリ リストに -lc++ を追加

于 2015-08-06T08:40:19.907 に答える