[解決済み] gxx_personality_v0は何のためにあるのですか?
2022-11-02 23:41:58
質問
OS開発サイトからの又聞きなのですが、どこにもまともな説明がなく、気になったので質問します。
gccを使用して自立型C++プログラムをコンパイル・リンクすると、時々このようなリンカーエラーが発生します。
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
これは、このシンボルが libstdc++ で定義されており、フリースタンディング環境では欠落しているためと思われます。この問題を解決するには、単にこのシンボルをどこかで定義する必要があります。
void *__gxx_personality_v0;
それはいいのですが、私は魔法のように動くものが好きではありません...。そこで質問ですが、この記号は何のためにあるのでしょうか?
どのように解決するのですか?
これはスタック・アンワイディング・テーブルで使用されます。 別の質問に対する私の答え . その回答で述べたように、その使用は Itanium C++ ABI と呼ばれています。 パーソナリティ・ルーチン .
グローバルなNULL voidポインタとして定義することでquot;work"するのは、おそらく何も例外をスローしていないからでしょう。何かが例外を投げようとするとき、あなたはそれが誤動作するのを見るでしょう。
もちろん、何も例外を使用していないのであれば、例外を無効にするために
-fno-exceptions
で無効にできます (また、RTTI を使っているものがなければ
-fno-rtti
). もしそれらを使っているならば、(他の回答がすでに指摘しているように)リンクに
g++
の代わりに
gcc
を追加します。
-lstdc++
を追加します。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] リンクエラー "undefined reference to `__gxx_personality_v0'" と g++ [duplicate].