[解決済み] シンボルテーブルとは?
2023-04-03 05:34:51
質問
CとC++の文脈で、シンボルテーブルが何であるかを説明できる人がいますか?
どのように解決するのですか?
シンボルテーブルには、2つの共通する意味があります。
まず、オブジェクトファイル内のシンボルテーブルです。 通常、C または C++ コンパイラーは、単一のソース ファイルを .obj または .o という拡張子を持つオブジェクト ファイルにコンパイルします。 これには、リンカーが作業用のアプリケーションや共有ライブラリに処理できる実行コードとデータの集合が含まれています。 オブジェクトファイルにはシンボルテーブルと呼ばれるデータ構造があり、オブジェクトファイル内のさまざまな項目をリンカーが理解できる名前にマッピングしています。 コードから関数を呼び出す場合、コンパイラはオブジェクトファイルにそのルーチンの最終的なアドレスを書きません。 代わりに、コードにプレースホルダーの値を入れ、リンカーに、処理中のすべてのオブジェクト ファイルからさまざまなシンボル テーブルで参照を検索し、最終的な場所をそこに貼り付けるように指示する注記を追加します。
第二に、共有ライブラリまたは DLL のシンボル テーブルもあります。 これはリンカーによって作成され、ライブラリのユーザーから見えるすべての関数とデータ項目に名前を付ける役割を果たします。 これにより、システムはランタイム リンクを行い、これらの名前へのオープン リファレンスを、ライブラリがメモリにロードされる場所に解決することができます。
もっと学びたいのであれば、John Levine の素晴らしい本 "Linkers and Loaders" をお勧めします。 リンクテキスト
関連
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】C++の余分な資格エラー
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
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++の場合)
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー