リンカ
リンケージエディタのこと
リンクするプログラム
オブジェクトファイルを連結し、未解決の名前を解決し、実行ファイルを作成する
オブジェクトファイルやライブラリを結合して、ターゲット環境のABIに準拠した実行可能ファイル(バイナリ)を生成する
ABI
リンクエラー
分割コンパイルによって、コンパイル時はたとえ中身がなくても関数の宣言さえあればコンパイルできるが、リンク時には実際に中身も見るので、中身が用意されていないとエラーになる
複数のオブジェクトファイルに同じ関数名や変数名があるときもリンクエラー
リンクローダ
もともとはロードとリンクは同時に行うものだった
が、その昔(1960~1970年代)のプログラムの巨大化によりリンクの処理がおそすぎて使えなくなった
なので、ロードとリンクを別々に分けることにした
この2つのうちの遅い方がリンク処理でそれを個別にやるやつがリンカとして切り出された
参考
『Clean Architecture』.icon p.113
ダイナミックリンク
リロケータブル
静的リンク
実行時ルーチンを必要なときに呼び出す
https://tyfkda.github.io/blog/2022/03/13/elf-linker.html
自作
https://qiita.com/saikoro-steak/items/e5089a2b33b52d5410bd
https://docs.oracle.com/cd/E19683-01/816-3972/6ma7euq8f/index.html
https://tanakamura.github.io/pllp/docs/linker.html
https://logmi.jp/tech/articles/325775