2012-03-16 8 views
7

スタティックライブラリとリロケータブルオブジェクトファイルの違いは何ですか?または、ダイナミックライブラリと共有オブジェクトファイルの間。スタティックライブラリとリロケータブルオブジェクトファイルの違いは?

そして、それは動的ライブラリを持っているものと等しいもの、ない場合には、それはそれにリンクすることができますが、共有オブジェクトファイルにはありませんか?

答えて

7

静的ライブラリは、基本的には単にオブジェクトファイルの集合です。通常、オブジェクトファイルのアーカイブはarです。 arを使用すると、ライブラリからオブジェクトファイルを抽出し、別のオブジェクトファイルを追加することができます。

一般に、動的ライブラリと共有オブジェクトファイルの違いはターゲットです共有オブジェクトを使用します。それよりももう少し違いがありますが、それほど大きな違いはありません。

1

動的(共有)ライブラリはPICコードを使用する - コードは、メモリ内の複数の実行ファイルによって使用されるライブラリの実際の物理的位置に関係なく動作します。

静的ライブラリは、実行可能ファイルを作成するために、段階的なリンク時に実行可能ファイルにリンクされています。

動的ライブラリの利点は、メモリ内の実行可能ファイルの小さいフットプリントです。静的ライブラリの利点は、ダイナミックライブラリを必要とせずに実行可能ファイルを提供することができ、少し速く実行するだけで、ライブラリを物理メモリのどこにでも配置できるようにする必要はありません。それらは、複数の実行ファイルで使用されている場合

+0

しかし私の質問は、 "静的対ダイナミックlib"についてではなく、 "ライブラリ対オブジェクトファイル"についてです。また、私の英語はうんざりしていません:)。だから、もしそれがすべて、絡み合った質問文のために - 私に教えてください。 – Jofsey

+0

ライブラリは単なるファイルの集まりです。コレクションが共有か静的かを確認してください。私の答えは、共有するファイルと静的ファイルの違いを教えてくれることです。 –

+1

あなたの答えは間違っています;-(ix86 Linuxでは 'PIC'以外のコードから共有ライブラリを作成することができます静的ライブラリは' -PIC'コードを含むことができ、共有ライブラリにリンクすることができます。 –

0

シャードライブラリは、ディスクスペースを節約します。共有ライブラリから同じ機能を使用する複数の実行可能ファイルの場合それぞれが独自のコピーを取得します。ディスク上で実行可能なものには、その関数のコードは含まれず、むしろ共有ライブラリへの参照が含まれます。

関連する問題