ライブラリ

問題

Linuxシステムにおいて,静的ライブラリと比較した場合の共有ライブラリの特徴はどれか。

  • 実行可能ファイルのサイズが大きくなる。
  • 実行時のメモリ使用効率が良い。
  • ライブラリの修正後,それを利用するプログラムの再コンパイルが必要である。
  • リンク時のオーバヘッドが小さい。

回答

実行時のメモリ使用効率が良い。

解説

静的ライブラリはプログラムの構築時に組み込まれ、共有ライブラリはプログラムの実行時に組み込まれます。

メモリ上に展開された共有ライブラリは、複数のプログラムから利用することができるので、メモリ効率は良くなります。

ライブラリ

ライブラリは図書館のことです。

プログラムそれぞれを本にして目録としてまとめて、たくさん置いてある図書館のイメージです。

ライブラリ: library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

静的ライブラリ・共有ライブラリ・動的ライブラリ

それぞれの違いは、下記がわかりやすいです。

I-8-9. ライブラリの種類とライブラリの利用方法

上のリンクでは、

ライブラリには、静的ライブラリと共有ライブラリがある。共有ライブラリには、動的ライブラリも含まれている。

と書かれていますが、動的ライブラリに共有ライブラリが含まれていると考えるのが自然な気がします…が、良く分かりません。

静的ライブラリ

プログラム(実行形式)の構築時に組み込まれるライブラリ。

動的ライブラリ

プログラム実行中の任意の時点で読み込まれるライブラリ。

共有ライブラリ

Linux OS に組み込まれているライブラリ。 /usr/libなどのディレクトリに配置され、ldconfigコマンドを実行することで OS がその存在を把握することができる。