デバッグ シンボルが実際に生成されるコンパイル プロセスのフェーズ。
-g オプションを使用してオブジェクト ファイルをコンパイルすると、オブジェクト ファイル (共有ライブラリ、静的ライブラリ、実行可能ファイル) が組み込まれている可能性がある場合、出力には常にデバッグ シンボルが含まれますか? リンク時に -g を指定しない場合、出力バイナリにデバッグ シンボルが含まれますか?
デバッグ シンボルが実際に生成されるコンパイル プロセスのフェーズ。
-g オプションを使用してオブジェクト ファイルをコンパイルすると、オブジェクト ファイル (共有ライブラリ、静的ライブラリ、実行可能ファイル) が組み込まれている可能性がある場合、出力には常にデバッグ シンボルが含まれますか? リンク時に -g を指定しない場合、出力バイナリにデバッグ シンボルが含まれますか?
.symtab
あり、プログラムで定義および参照される関数とグローバル変数に関する情報が含まれています。ただし、コンパイラ内のシンボル テーブルとは異なり、シンボル テーブルに.symtab
はローカル変数のエントリは含まれません。-g
行番号などの追加のデバッグ情報を使用できるようにします。David が指摘したように、デフォルトの動作はコンパイラとプラットフォームによって異なります。一般に、-g はコンパイラ オプションです。コンパイラは、特定の命令を生成するためにどのソース コード行が使用されているかを認識しているからです。
ただし、リンカーによっては -g も指定する必要があり、リンカーによっては他のスイッチを指定する必要がある場合があります。 .o ファイルから必要なもの。
それはすべて、リンカーのドキュメントを読むことに帰着します。