授業の要点が分かる学生のための学習辞典サイト

リンカ【りんか】

リンカとは、正式名称をリンケージエディタと呼び、機械語にコンパイル(翻訳)されたプログラムを結合することで、実行可能なプログラムを作成するものである。人間が書いたソースプログラムをコンパイルした際、例えばC言語であればオブジェクトファイルと呼ばれるファイルが作成される。これはコンパイルされたプログラムの断片のようなもので、これだけではプログラムを実行できる段階ではない。そこでこれをつなぎ合わせる必要がある。この機能を担うのがリンケージエディタ、リンカである。リンカはオブジェクトファイルを参照・解析し、他のオブジェクトファイルやライブラリなどと関連付け、実行可能な状態に構成するのである。

関連した単語

リンカの種類

リンカが担う役割をリンクという。リンクには2種類の方式が存在する。一つ目は「静的リンク」と呼ばれる方式である。この方式では、リンカは複数のオブジェクトファイルを一つの実行可能なファイルに統合することが特徴である。参照する別のオブジェクトファイルやライブラリ内の必要な部分も含め、すべて統合して一つにまとめてしまう。これにより、プログラム単独で実行できるというメリットが得られ、単独利用を想定した組み込みプログラムにおいてよく採用されている。もう一つは「動的リンク」と呼ばれる方式である。この方式では、実行できるプログラムを一つにまとめることはせずに、例えばプログラム中にあるライブラリの参照が記述されていたとすれば、そのライブラリ名のみを実行ファイルに記述し、実行時にライブラリを別で読み込むという処理を行う。こちらの長所は、本体となるプログラムが軽くなることで、例えば複数のプログラムを利用し、同一のライブラリを参照する際などは、この方式の方が効率が良いと言える。

リンクの処理

上述の通り、リンカには2種類のリンク方式があるが、その処理手順について説明する。静的リンクでは3つの主要な処理がある。まず初めにファイルの連結が必要である。これは、コンパイルによって複数のオブジェクトファイルが存在する場合に、連結し一つの実行ファイルにする。次にライブラリの連結を行う。これはプログラムの内部にライブラリの参照があった場合に、その参照すべきライブラリのオブジェクトファイルも同様に連結する。そして、アドレスの整理が必要となる。ソースプログラムによって定義されるなどされた変数や関数について割り当てられるアドレスを整理する。これは、プログラムの全体像が初めはわからないことから、必要となっている。動的リンクの場合の処理はおおまかに説明すると一つだけであり、ローダと呼ばれるプログラムを何らかの方法で利用すればよい。ローダとは、他のプログラムを起動し実行するためのプログラムを指す。

問題

リンカの持つ役割について簡潔に説明しなさい

答えを見る

カテゴリ内ランキング

cacicoテキスト買取
cacicoテキスト