branch10480’s blog

Topics that I've learned.

スタティックリンクとダイナミックリンク

スタティックリンクダイナミックリンク について勉強したのでまとめてみようと思います!

リンクとは?

プログラム本体からライブラリの関数を呼び出せるようにすることです。

リンクには2種類あります。

  1. スタティックリンク(静的リンク)
  2. ダイナミックリンク(動的リンク)

スタティックリンク(静的リンク)

プログラムをコンパイルする際に実行ファイル内にライブラリ内機能を実行ファイルないに埋め込む形式です。

ただしスタティックリンクで同じライブラリ機能を複数の実行ファイルから呼び出した場合、その同じライブラリ機能が呼び出すプログラムの数だけ重複して埋め込まれるというデメリットがあります。

ダイナミックリンク(動的リンク)

実行ファイルへライブラリ機能を直接埋め込むのではなく、 実行時にライブラリ機能を呼び出す リンクをダイナミックリンクといいます。

ちなみに、ダイナミックリンクによって呼び出されるライブラリを 共有ライブラリ と呼ばれ、 lib〜.so〜 という名前が付けられています。

共有ライブラリは通常以下に保存されています。

/lib

or

/usr/lib