ホームページ  >  記事  >  バックエンド開発  >  コンパイル中に「未定義のシンボル ___gxx_personality_v0」エラーが発生するのはなぜですか?

コンパイル中に「未定義のシンボル ___gxx_personality_v0」エラーが発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-15 17:48:02950ブラウズ

Why am I getting an

コンパイル中の「未定義シンボル ___gxx_personality_v0」エラーのデバッグ

問題:

C のビルド中コマンドラインを使用してコードを作成すると、未定義のシンボルが発生しますエラー:

$ gcc test.cpp
Undefined symbols:
  "___gxx_personality_v0", referenced from:

コードは単純であるにもかかわらず、説明がなければコンパイルに失敗します。

説明:

エラーが発生する理由は次のとおりです。コードは、 C のコンパイラである g ではなく、C 言語のコンパイラである gcc を使用してコンパイルされています。シンボル ___gxx_personality_v0 は、C 標準ライブラリ (libstdc ) に固有のシンボルであり、C 標準ライブラリ (libc) には存在しません。

解決策:

これを解決するには 2 つの解決策があります問題:

  • Use g :

    コードは C で書かれているため、両方の C コンパイラを含む g を使用してコンパイルする必要があります。そしてC標準ライブラリ。代わりに次のコマンドを使用してください:

    $ g++ test.cpp
  • C 標準ライブラリを追加します:

    gcc を使用する必要がある場合は、C ライブラリを追加できます。コマンドラインに -lstdc フラグを追加して、標準ライブラリを追加します。このフラグは、必要なシンボルを含む libstdc ライブラリをインクルードするようにリンカーに指示します。代わりに次のコマンドを使用してください:

    $ gcc test.cpp -lstdc++

注:

C と C コードの両方をシームレスに処理するため、 g を使用することをお勧めします。使用している言語に適したコンパイラを選択することで、この種のエラーを防止し、コンパイルを確実に成功させることができます。

以上がコンパイル中に「未定義のシンボル ___gxx_personality_v0」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。