概要
リンカ(linker)は、複数のオブジェクトファイルやライブラリを結び付けて、実行ファイルや共有ライブラリを生成する仕組みです。
やさしい説明
リンカは、分かれている部品をつなぎ合わせて、実行できる形に仕上げる仕組みです。
詳細解説
リンカ(linker)は、コンパイル済みのオブジェクトファイルに含まれる未解決シンボルを、他のオブジェクトファイルやライブラリの定義と対応付けて解決します。そのうえで、配置すべきアドレスや参照先を確定し、最終的な実行ファイルや共有ライブラリを出力します。Linuxでは、GCCやClangの背後でld系のリンカが動いていることが多く、静的リンクか動的リンクかによって結果が変わります。リンクエラーは、関数定義の不足、ライブラリ指定順、互換性のないオブジェクト混在などで起こるため、リンカはビルド終盤の重要な役割を持つ用語です。
この用語が重要な理由
リンカの役割を理解すると、コンパイルが通ったのに実行ファイルが作れない場面で、原因をリンク段階に絞って考えられます。
この用語を知らないと困る場面
undefined referenceなどのエラーが出た時、静的リンクと動的リンクの違いを読む時、共有ライブラリの依存を確認する時に重要です。
一番よくある誤解
リンカはローダーと同じではありません。リンカはビルド時に部品を結合し、ローダーは実行時に必要な共有ライブラリを読み込みます。
理解チェック
要点を言い換えたり、関連例を思い出せたらチェックを入れてください。
-
リンカが何を表し、どこで使われるかを説明できれば理解は十分です。
用例
- ビルドログでリンク段階のエラーを見つけ、未解決シンボルの原因を特定する。
現場で見る場所
-
ビルドログ、リンカエラー、共有ライブラリの依存確認
リンカとローダーは何が違いますか?用語の正体と周辺の仕組みを意識しながら読むと、設定や出力の意味を取り違えにくくなります。
混同しやすい用語
-
loader リンカはローダーと近い場面で登場しますが、同じ意味ではありません。リンカはオブジェクトファイルやライブラリを結合して最終的な実行形式を作る処理系です。一方、ローダーは実行ファイルや共有ライブラリをメモリへ読み込み準備する仕組みです。
FAQ
-
Q. リンカはビルド時にオブジェクトファイルとライブラリを結合する仕組みで、ローダーは実行時に必要な共有ライブラリを読み込む仕組みです。 A. リンク段階で何が確定するか説明できるか
関連コマンド
資格試験との関連
-
LPIC-2 201 範囲: ビルド、リンク、実行形式、開発基盤の理解リンカはビルド、リンク、実行形式、開発基盤の理解に関わる語で、試験範囲の文章、設定、障害時の説明を読み解く土台になります。
-
LinuC レベル2 201 範囲: ビルド、リンク、実行形式、開発基盤の理解リンカはビルド、リンク、実行形式、開発基盤の理解に関わる語で、試験範囲の文章、設定、障害時の説明を読み解く土台になります。
参照リンク
- カテゴリー: Development Build
- レベル: Basic
- 対応試験: LinuC レベル2 201, LPIC-2 201