リンカーローダーとコンパイラの違いは何ですか

目次:

Anonim

リンカーローダーとコンパイラの主な違いは、 リンカは、コンパイラによって生成された1つ以上のオブジェクトファイルを単一の実行可能ファイルに結合します。一方、ローダーはプログラムをメモリに配置し、コンパイラがソースコードをオブジェクトコードに変換する間、実行の準備をします。.

コンピュータプログラムは、コンピュータが実行するときに特定のタスクを実行する命令のコレクションです。システムソフトウェアは、他のソフトウェアにプラットフォームを提供するコンピュータプログラムの一種です。リンカー、ローダー、コンパイラーは、コンピュータープログラミングに関連する3つのシステムソフトウェアです。

コンパイラ、リンカー、ローダー

コンパイラとは

プログラムは、特定のタスクを実行するための一連の命令です。ソースコードとも呼ばれます。プログラマーはソースコードを理解できますが、CPUはそれを理解できません。そのため、ソースコードを機械が理解できる形式に変換する必要があります。

図1:コンパイラ

コンパイラは、このプロセスで使用される特別なソフトウェアです。ソースコードをオブジェクトコードに変換します。このオブジェクトコードは中間コードです。 CPUは直接実行できません。

リンカーとは

ソースコードをオブジェクトコードに変換した後、リンカはリンクタスクを実行します。コンパイラによって生成された1つ以上のオブジェクトファイルを受け取り、それらを組み合わせて実行可能ファイルを生成します。

図2:リンカー

さらに、オブジェクトコードとライブラリを組み合わせます。たとえば、Cプログラムでは、数値の平方根を計算するsqrt()関数がある場合、リンカはプログラムを数学ライブラリにリンクします。最後に、CPUは、生成された実行可能ファイルを読み取って理解できます。したがって、CPUはそのファイルを実行して、プログラムで定義されたタスクを実行できます。

ローダーとは

ローダーはメモリ内のプログラムを見つけて、実行できるように準備します。これは、プログラムを開始するときに重要なコンポーネントです。これには、実行可能ファイルの内容の読み取りやファイルのメモリへの配置などのタスクが含まれます。さらに、実行可能ファイルを実行できるように準備するために必要なタスクを実行します。ロードが完了すると、OSはロードされたプログラムコードに制御を渡すことによってプログラムを開始します。

図3:コンパイル

ほとんどのオペレーティングシステムは、プログラムをロードするためのローダーをサポートしています。ほとんどのシステムではローダーがメモリに配置されていますが、仮想メモリをサポートする他のシステムではローダーがページング可能なメモリ領域に配置されています。

リンカーローダーとコンパイラの違い

意味

リンカは、コンパイラによって生成された1つ以上のオブジェクトファイルを取得し、それらを1つの実行可能ファイルに結合するコンピュータユーティリティプログラムです。ローダーは、プログラムをメモリにロードする役割を担うオペレーティングシステムの一部です。コンパイラは、あるプログラミング言語(ソースコード)で記述されたコンピュータコードを別のプログラミング言語(ターゲットコード)に変換するソフトウェアです。したがって、これはリンカーローダーとコンパイラの主な違いを説明しています。

機能性

さらに、リンカは複数のオブジェクトコードを組み合わせて、それらをライブラリにリンクします。一方、ローダーは実行可能ファイルを実行用に準備し、コンパイラーはソースコードをオブジェクトコードに変換します。したがって、これが機能面でのリンカーローダーとコンパイラの違いです。

結論

簡単に言うと、リンカーローダーとコンパイラの違いは、リンカーがコンパイラによって生成された1つ以上のオブジェクトファイルを単一の実行可能ファイルに結合し、ローダーがプログラムをメモリに配置して、コンパイラがソースコードを変換する間に実行できるように準備することです。オブジェクトコード。

リファレンス:

1.「リンカー(コンピューティング)」。ウィキペディア、ウィキメディア財団、2018年10月6日、こちらから入手可能2。 「ローダー(コンピューティング)」ウィキペディア、ウィキメディア財団、2018年10月10日、こちらから入手可能3。 "コンパイラ。"ウィキペディア、ウィキメディア財団、2018年10月9日、こちらから入手できます。

画像提供:

1.「理想的なコンパイラ」。 (CC BY-SA 3.0)CommonsWikimedia2経由。 Qefによる「リンカー」– Commons Wikimedia3を介したOrderud(パブリックドメイン)によるビットマップと同等の配置に基づく、アップローダーによる独自の作業。 「screenshot-turbo51.com2016-01-1418-44-16」By անհայտ– Aho、Sethi、Ullman、Compilers:Principles、Techniques、and Tools、Addison-Wesley、1986。ISBN 0-201-10088-6( CC BY-SA 4.0)CommonsWikimedia経由

リンカーローダーとコンパイラの違いは何ですか