KENスクールブログ | パソコン教室・パソコン講座なら個別指導のKENスクール

BLOGKENスクールブログ

ネットワーク

共有ライブラリ管理

KENスクールの動画配信サービス「KEN×ONLINE」

当記事は、Linuxにおける共有ライブラリ管理についてご紹介します。

ライブラリとは、よく利用される機能をまとめて他のプログラムから参照できるようにした、プログラムの部品のことです。
ファイルの入出力機能など、多くのプログラムが必要とする機能は、ライブラリを利用することにより、1からプログラムを開発する必要がなくなります。
また、ライブラリには「静的ライブラリ」と「共有ライブラリ」の2種類があります。

静的リンクと動的リンク

ライブラリの利用方法として、「静的(Static)リンク」と「動的(Dynamic)リンク」があります。
ここでのリンクは、プログラムの機構に用いられるリンクを指します。

静的(Static)リンク

静的リンクとは、プログラムをコンパイルする過程で実行ファイルにライブラリを埋め込む方法です。
利用される頻度の高い機能(ライブラリ)の場合、多くの実行ファイルに埋め込まれてしまうことになり、ディスク容量の無駄使いなります。
利点としては、プログラムの処理速度が速いことと実行環境を整える必要がないことが挙げられます。

動的(Dynamic)リンク

動的リンクとは、コンパイル時ではなく、プログラムの実行時にライブラリを呼び出す方法です。
実行ファイルにライブラリが含まれないため、ディスク容量の節約につながります。
ただし、プログラムの実行環境としてライブラリをそろえる必要があります。
また、動的リンクによって呼び出されたライブラリを「共有ライブラリ」といいます。

必要な共有ライブラリの確認

ライブラリはプログラムの種類や用途によって格納場所が分かれており、例えば以下のような場所に格納されます。

また、共有ライブラリの名前は、下記のように一定の形式に基づいて付けられています。

lddコマンド

実行ファイルがどのような共有ライブラリを必要としているかを確認するには、「ldd」コマンドを使用します。
引数に調べたい実行ファイル(プログラム名)を指定することにより、依存しているライブラリ名とその格納場所が表示されます。

上記の例では、「ls」コマンドが使用しているライブラリを調べています。 なお、実行ファイルの指定には「絶対パス」を使う必要があります。

ライブラリ検索のパスと順序

プログラムを実行すると、「リンカ(必要なプログラムをリンクおよびロードするソフトウェア)」がライブラリを検索し、動的リンクを構成します。 この時、次の順番でライブラリの検索を行います。

環境変数 LD_LIBRARY_PATH

環境変数「LD_LIBRARY_PATH」にライブラリのパスを入力しておくと、リンカはそのパスを検索します。
環境変数を使うことにより、ユーザーごとにライブラリを指定することが可能です。

上記の例では、検索ディレクトリとして「/home/ken-nw/kenlib」を、環境変数「LD_LIBRARY_PATH」に追加しています。

/etc/ld.so.cacheファイル

ライブラリの検索時に、「/lib」「/usr/lib」のディレクトリ以外も検索させたい場合、そのリストを「/etc/ld.so.conf」ファイルに記述しておきます。

最近では、上記のように「/etc/ld.so.conf.d/」ディレクトリ配下に複数の設定ファイルを配置し、「/etc/ld.so.conf」の「include」行でそれらのファイルを読み込ませる設定となっている場合もあります。

ldconfigコマンド

プログラムの実行時に、「/etc/ld.so.conf」ファイルで指定されたディレクトリなどを、毎回検索するのは効率よくありません。
そのため、実際にはバイナリのキャッシュファイルである「/etc/ld.so.cache」ファイルを参照するようになっています。
「/etc/ld.so.conf」ファイルの編集後、「/etc/ld.so.cache」ファイルの再構築をするには、「ldconfig」コマンドを使用します。

 

いかがでしたでしょうか。
ぜひ学習の際にお役立て下さい。

この記事に関連する講座

Linux操作の第一歩はここから

詳しくはこちら