C コードを gcc でコンパイルすると、「リンク上の未定義シンボル ___gxx_personality_v0」エラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-11-16 06:11:03
オリジナル
693 人が閲覧しました

Why am I getting

C コンパイル中の未定義シンボル エラー

コマンド「gcc test.cpp」を使用して C プログラムをコンパイルしようとすると、次のエラーが発生します。エラー メッセージ「リンク上の未定義シンボル ___gxx_personality_v0」。このエラーは、リンクを成功させるために必要なシンボルが欠落していることを示します。

中心的な問題は、C コードに不適切なコンパイラを使用することに起因します。 gcc は主に C プログラムをコンパイルすることを目的としていますが、C では g などの別個のコンパイラが必要です。 C コードで gcc を使用すると、例外の処理と巻き戻しに不可欠な特定のシンボル ___gxx_personality_v0 を認識して処理するために必要な機能が不足します。

この問題に対処するには、次の 2 つの推奨アプローチがあります。

g コンパイラの使用

主な解決策は、 C コードに適したコンパイラ。次のように、コマンド ラインで gcc を g に置き換えます。

g++ test.cpp
ログイン後にコピー

g は、リンクに必要なシンボルを含め、 C の複雑さを処理する機能を備えています。

C とのリンク標準ライブラリ (オーバーライド アプローチ)

または、続行するやむを得ない理由がある場合は、 gcc を使用すると、コマンドラインにオプション「-lstdc」を追加できます。このオプションは、欠落しているシンボルを含む C 標準ライブラリに対してリンクするように gcc に指示します:

gcc test.cpp -lstdc++
ログイン後にコピー

このメソッドを使用しても、C コードを gcc でコンパイルしてリンクできますが、効率が劣る可能性があります。

これらの解決策に従うことで、「リンク上の未定義シンボル ___gxx_personality_v0」エラーを排除し、コンパイルとリンクを確実に成功させることができます。 C コード。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート