gccによるC言語ファイルのコンパイルの流れ

f:id:smatsuzaki:20200216101106p:plain

memo

  • オブジェクトファイル中には、実行コードや変数値のデータなどが格納されているが、この段階では、まだ、メモリ上の固定アドレスに割り当てられていない。実際に固定アドレスが割り当てられるのは、リンカによるリンクを行う際で、このアドレス割り当て作業のことを 再配置 ( relocation ) と呼ぶ。

  • オブジェクトファイル内の実行コードや変数値はこれを可能にするために、実際に自身がメモリ上のどこに配置されても問題なく動作するように設計されている。この状態を 再配置可能 ( relocatable ) (な状態)と呼ぶ。同様にオブジェクトファイルは、 再配置可能ファイル ( relocatable file )と呼称されることがある。[1] 

  • ELFファイル中のシンボルテーブルは、nm(1) を使用することで参照が可能。

[1] 詳細は、『リンカ・ローダ実践開発テクニック』 P26 を参照

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */