#ライブラリとは
よく使用されるプログラムの共通部分を抜き出して、他のプログラムから利用できるようにしたもの。
ライブラリ | 説明 |
---|---|
静的ライブラリ | プログラムの作成時にその実行ファイル内に組み込まれたライブラリ ・メリット|一つのプログラムだけで動作させられ、別環境で動作可 ・デメリット|プログラムのサイズが大きくなる |
共有ライブラリ | プログラムの実行時にロードされて、複数のプログラム間で共有されるライブラリ ・メリット|プログラム全体のサイズが小さくなる デメリット|プログラム実行時に適切に設置されたライブラリが必要 |
#スタティックリンクとダイナミックリンク
プログラムからライブラリの機能を呼び出すことをリンクと呼び、リンクには以下の2種類がある。
ライブラリ | 説明 |
---|---|
スタティックリンク | プログラム作成時に、あらかじめライブラリの機能をプログラム本体に組み込む方法。 この時に組み込まれるライブラリは静的ライブラリ |
ダイナミックリンク | プログラムの実行時に、ライブラリの機能を呼び出す方法。 この時に呼び出されるライブラリを共有ライブラリ |
#必要となる共有ライブラリの確認
共有ライブラリは、「/lib」または「/usr/lib」に配置されており、libtinfo.so.5のように「lib~.so~」という名前が付けられる。実行ファイルが必要とする共有ライブラリは「ldd」コマンドで確認することができる。例えば、moreコマンド(/bin/more)が必要な共有ライブラリは、「ldd/bin/more」で確認することができる。
#必要となる共有ライブラリの検索
「lib」や「/usr/lib」ディレクトリ以外の場所に共有ライブラリを設置する場合、その共有ライブラリの検索パスを設定する必要がある。検索パスを設定する方法は以下の2種類がある。
- 「/etc/ld.so.conf」ファイルに設定
#ld.so.conf ファイルに /usr/test/lib ディレクトリを検索パスとして設定
$ vi /etc/ld.so.conf
/usr/test/lib
#ldconfig の実行により、/etc/ld.so.cache を更新
$ldconfig
- 環境変数のLD_LIBRARY_PATHへの設定
#環境変数の LD_LIBRARY_PATH に /usr/test/lib ディレクトリを検索パスとして設定
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/test/lib