カテゴリ: Linux 更新日: 2026/06/09

/etc/ld.so.conf.dとは?Linuxの共有ライブラリ設定を初心者向けに解説

Linuxの/etc/ld.so.conf.dとは?共有ライブラリ設定ディレクトリ
Linuxの/etc/ld.so.conf.dとは?共有ライブラリ設定ディレクトリ

先生と生徒の会話形式で理解しよう

生徒

「Linuxで新しいソフトをインストールしたのに、実行しようとすると『ライブラリが見つかりません』というエラーが出て動かないんです。どうすればいいですか?」

先生

「それはプログラムが動くために必要な『共有ライブラリ(キョウユウライブラリ)』の場所を、システムが把握できていないからかもしれませんね。」

生徒

「場所を教えてあげる必要があるんですね。どこで設定するんですか?」

先生

「そんな時に役立つのが /etc/ld.so.conf.d というディレクトリです。ここに設定ファイルを追加することで、システムに新しいライブラリの場所を教えることができるんですよ。」

生徒

「なんだか難しそうな名前ですね。初心者でも設定できるでしょうか?」

先生

「仕組みさえ分かれば簡単ですよ!今回はこの設定ディレクトリの役割と使い方を、一歩ずつ丁寧に解説していきますね。」

Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。

試して理解 Linuxのしくみを見る

※ Amazonアソシエイト広告リンク

1. /etc/ld.so.conf.dとは何か?

1. /etc/ld.so.conf.dとは何か?
1. /etc/ld.so.conf.dとは何か?

Linux(リナックス)システムにおいて、/etc/ld.so.conf.d は共有ライブラリ(読み方は共有ライブラリ:キョウユウライブラリ)を探すためのパス(場所)を管理する非常に重要なディレクトリです。共有ライブラリとは、複数のプログラムで共通して利用できる便利な機能が詰まった部品のようなものです。Windows(ウィンドウズ)でいうところの「DLLファイル」に近い存在です。

通常、Linuxシステムはあらかじめ決められた場所(/lib や /usr/lib など)からライブラリを探しますが、自分で新しくインストールしたソフトが独自の場所にライブラリを持っている場合、そのままでは見つけることができません。そこで、この /etc/ld.so.conf.d ディレクトリの中に「ここも探してね」という指示書を置いておく仕組みになっています。

この仕組みにより、システム全体の設定を直接書き換えることなく、アプリケーションごとに設定ファイルを追加・削除できるため、管理が非常に安全かつスムーズに行えるようになっています。

2. 共有ライブラリと動的リンクの仕組み

2. 共有ライブラリと動的リンクの仕組み
2. 共有ライブラリと動的リンクの仕組み

プログラムが実行される際、必要なライブラリをその都度読み込むことを動的リンク(読み方は動的リンク:ドウテキリンク)と呼びます。この読み込み作業を担当するのが、動的リンカ(読み方は動的リンカ:ドウテキリンカ)という特別なプログラムです。Linuxでは主に ld.sold-linux.so がその役割を担っています。

動的リンカは、プログラムが起動した瞬間に「必要な部品はどこかな?」と探しに行きます。しかし、ハードディスクの中を端から端まで探していては時間がかかりすぎてしまいます。そこで、動的リンカはあらかじめ作成された「住所録」を参照します。この住所録を作成するための元データが /etc/ld.so.conf.d 内にあるファイル群なのです。

イメージとしては、図書館で本を探すときに、書架を全部回るのではなく「検索機」を使って場所を特定するのに似ています。/etc/ld.so.conf.d は、その検索機に新しい本の棚の位置を登録するためのメモ用紙のような役割を果たしています。

3. ディレクトリの中身を確認してみよう

3. ディレクトリの中身を確認してみよう
3. ディレクトリの中身を確認してみよう

それでは、実際に自分のパソコンやサーバーの /etc/ld.so.conf.d の中にどのようなファイルがあるかを確認してみましょう。このディレクトリの中には、通常 .conf という拡張子(読み方は拡張子:カクチョウシ)がついたファイルが並んでいます。

以下のコマンドを入力して、ディレクトリ内のファイル一覧を表示させてみましょう。


ls /etc/ld.so.conf.d
fakeroot-x86_64-linux-gnu.conf  libc.conf  x86_64-linux-gnu.conf

このように、いくつかの設定ファイルが見つかるはずです。これらのファイル一つ一つの中に、ライブラリが格納されているディレクトリのパスが記述されています。例えば libc.conf の中身を見てみると、標準的なライブラリの場所が書かれていることがわかります。

4. 設定ファイルの書き方とルール

4. 設定ファイルの書き方とルール
4. 設定ファイルの書き方とルール

/etc/ld.so.conf.d の中に作成する設定ファイルの内容は、驚くほどシンプルです。基本的には、共有ライブラリが存在するディレクトリのフルパスを1行ずつ記述するだけです。特別なプログラムコードを書く必要はありません。

例えば、/usr/local/mylib/lib という場所に新しいライブラリを置いた場合、その場所を教えるためのファイル(例:mylib.conf)を作成し、中にそのパスを書き込みます。ファイル名は自由ですが、必ず最後を .conf で終わらせるのがルールです。

実際のファイルの中身を想定した例をコマンドで確認してみましょう。


cat /etc/ld.so.conf.d/libc.conf
# libc default configuration
/usr/local/lib

このように、非常に簡潔な内容になっていることがわかりますね。コメント行(#で始まる行)を入れることも可能です。

5. 新しいパスを追加する手順

5. 新しいパスを追加する手順
5. 新しいパスを追加する手順

新しい共有ライブラリの場所をシステムに認識させる手順を解説します。この作業には管理者権限(読み方は管理者権限:カンリシャケンゲン)が必要になるため、sudo コマンドを使用するか、root(ルート)ユーザーで行います。

まずは、新しい設定ファイルを作成してみましょう。ここでは例として「my-app」というソフトのライブラリ場所を登録します。


echo "/opt/my-app/lib" > /etc/ld.so.conf.d/my-app.conf
cat /etc/ld.so.conf.d/my-app.conf
/opt/my-app/lib

これで指示書の作成は完了ですが、実はこれだけではシステムはまだ新しい場所を認識していません。作成したメモをシステム全体の「住所録」に反映させるための更新作業が必要になります。そのために使うのが ldconfig コマンドです。

6. 設定を反映させるldconfigコマンド

6. 設定を反映させるldconfigコマンド
6. 設定を反映させるldconfigコマンド

/etc/ld.so.conf.d にファイルを置いた後、必ず実行しなければならないのが ldconfig(読み方はldconfig:エルディーコンフィグ)コマンドです。このコマンドを実行することで、設定ファイルの内容が読み取られ、共有ライブラリのキャッシュ(住所録の実体である /etc/ld.so.cache)が更新されます。

動的リンカは実行時に .conf ファイルを直接見に行くのではなく、この高速な「キャッシュファイル」を見に行きます。そのため、ldconfig を忘れると、いくら設定ファイルを正しく書いてもライブラリは見つかりません。


ldconfig
# エラーが出なければ更新完了です。

もし、正しく反映されたか確認したい場合は、-p オプションを付けて実行すると、現在システムが認識しているすべての共有ライブラリ一覧を表示できます。

7. ライブラリが見つかるか確認するlddコマンド

7. ライブラリが見つかるか確認するlddコマンド
7. ライブラリが見つかるか確認するlddコマンド

設定がうまくいったかどうかを確認するために便利なのが ldd(読み方はldd:エルディーディー)コマンドです。このコマンドを使うと、特定のプログラムがどのライブラリを必要としていて、それらが無事にシステムで見つかっているかを表示してくれます。

使い方は簡単で、調べたい実行ファイル(バイナリファイル)のパスを指定するだけです。一般ユーザー権限でも実行可能です。


ldd /bin/ls
    linux-vdso.so.1 (0x00007ffd399f5000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f5a6b0c0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5a6aece000)
    libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f5a6ae37000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5a6b11d000)

結果の中で => の右側にファイルパスが表示されていれば成功です。もし not found と表示されている場合は、設定ディレクトリへの追記や ldconfig の実行が漏れている可能性があります。

8. なぜ /etc/ld.so.conf を直接編集しないのか?

8. なぜ /etc/ld.so.conf を直接編集しないのか?
8. なぜ /etc/ld.so.conf を直接編集しないのか?

古いLinuxの解説書などでは、/etc/ld.so.conf というファイル自体にパスを書き込む方法が紹介されていることもあります。実は /etc/ld.so.conf.d ディレクトリは、この /etc/ld.so.conf から読み込まれる仕組みになっています。

現在、直接ファイルを編集せずに .d という名前のディレクトリを使うのが主流なのは、管理のしやすさに理由があります。一つの大きなファイルをみんなで編集すると、誤って他の重要な設定を消してしまうリスクがありますが、アプリごとに別々のファイル(my-app.conf など)に分けておけば、不要になったときにそのファイルだけを消せば済むからです。

これは現代のITシステムやサーバー構築における「設定のモジュール化」という重要な考え方に基づいています。パッケージ管理システム(読み方はパッケージ管理システム:パッケージカンリシステム)もこの仕組みを利用して、自動的に設定を管理しています。

9. 初心者がハマりやすいトラブルと対処法

9. 初心者がハマりやすいトラブルと対処法
9. 初心者がハマりやすいトラブルと対処法

共有ライブラリの設定でよくある失敗は、大きく分けて3つあります。1つ目は「拡張子を忘れること」です。/etc/ld.so.conf.d の中のファイルは、.conf で終わっていないと無視されてしまいます。2つ目は「ldconfigの実行忘れ」です。これはプロでも時々忘れるポイントです。

3つ目は「タイポ(入力ミス)」です。ディレクトリのパスを1文字でも間違えると、システムはライブラリを見つけることができません。パスを記述する際は、エディタで直接打ち込むよりも、実際のディレクトリで pwd(読み方はpwd:ピーダブリュディー)コマンドを実行して、出力された正確なパスをコピー&ペーストするのが確実です。

もし何か不具合が起きたら、まずは ls -l /etc/ld.so.conf.d でファイルが存在するか確認し、次に cat で中身のパスが正しいかチェックする習慣をつけましょう。落ち着いて確認すれば、Linuxのストレージ管理やファイルシステムへの理解もぐっと深まりますよ。

LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。

Linux教科書 LPICレベル1 スピードマスター問題集を見る

※ Amazonアソシエイト広告リンク

まとめ

まとめ
まとめ

今回の記事では、Linuxシステムにおける共有ライブラリの管理において欠かせないディレクトリである/etc/ld.so.conf.dの役割と、具体的な設定手順について詳しく解説してきました。共有ライブラリ(シェアードライブラリ)は、複数の実行ファイルが共通の機能を利用するための仕組みであり、システムのメモリ節約やメンテナンス性の向上に大きく寄与しています。

通常、Linux OSは標準的なパスからのみライブラリを探しますが、独自にビルドしたソフトウェアやサードパーティ製アプリケーションを利用する場合、そのライブラリが標準外の場所(例えば /opt 配下など)に配置されることが多々あります。そのような時に「ライブラリが見つかりません(error while loading shared libraries)」というエラーを回避するために、/etc/ld.so.conf.dを活用することが推奨されます。

共有ライブラリ管理の重要ポイント

設定を確実に行うためのポイントを再確認しましょう。

  • ディレクトリの役割: /etc/ld.so.conf.d は、動的リンカが参照する追加のパスを格納する場所。
  • 設定の形式: 1行につき1つのフルパスを記述したテキストファイルを作成する。
  • 拡張子のルール: ファイル名は任意だが、必ず末尾を「.conf」にする。
  • 反映作業: 設定後は必ず管理者権限で ldconfig コマンドを実行し、キャッシュを更新する。

具体的な設定例と確認方法

例えば、独自のデータベースツールを /usr/local/custom-db/lib にインストールした場合、システム全体からそのライブラリを参照可能にする手順は以下のようになります。この一連の流れをマスターすれば、Linuxの環境構築スキルが一段と向上します。


# 1. 新しい設定ファイルを作成する
echo "/usr/local/custom-db/lib" | sudo tee /etc/ld.so.conf.d/custom-db.conf

# 2. 設定を反映させる(非常に重要!)
sudo ldconfig

# 3. 反映されたか確認する
ldconfig -p | grep custom-db

このように、直接 /etc/ld.so.conf 本体を編集するのではなく、ディレクトリ内にファイルを分割して配置する手法は、システムのクリーンさを保つための「ベストプラクティス」と言えます。不要になった際は、作成したファイルを削除して ldconfig を再実行するだけで元の状態に戻せるため、トラブルシューティングも容易になります。

エンジニアが知っておくべき周辺知識

実際の開発現場やサーバー運用では、共有ライブラリの依存関係に悩まされることが少なくありません。ライブラリのバージョン競合が発生した場合や、特定のプログラムだけに一時的に別のライブラリを読み込ませたい場合は、環境変数である LD_LIBRARY_PATH を使う方法もあります。しかし、システム全体に恒久的な変更を加えたい場合は、今回学んだ /etc/ld.so.conf.d を使うのが正攻法です。

また、ライブラリの検索順序(優先順位)についても意識しておくと良いでしょう。一般的には、実行ファイル自体に埋め込まれたパス(RPATH)や環境変数が優先されますが、最終的なフォールバックとして設定ファイルに書かれたパスが参照されます。こうした仕組みを理解しておくことで、複雑なソフトウェアのインストール時にも、冷静に対処できるようになります。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました。/etc/ld.so.conf.d の使い方がよく分かりました!設定ファイルを作って、最後に ldconfig を実行するだけなんですね。」

先生

「その通りです。意外とシンプルだったでしょう?ポイントは、単にファイルを置くだけじゃなくて、システムに『新しい住所を登録したよ!』と教える ldconfig のステップを忘れないことですね。」

生徒

「はい、そこが一番の落とし穴になりそうです。もし ldd コマンドで確認して、まだ『not found』って出てしまったら、スペルミスや ldconfig の実行漏れを疑えばいいんですね。」

先生

「素晴らしい洞察です。ちなみに、なぜファイルを細かく分けるのかという理由は覚えていますか?」

生徒

「ええと、一つの大きなファイルをみんなでいじると壊れやすいからですよね。アプリごとにファイルを分けておけば、管理が楽だし、安全だっていう『モジュール化』の考え方、すごく納得しました!」

先生

「完璧です。Linuxはこのように『設定を部品化する』仕組みが至るところにあります。これに慣れてくると、サーバー構築やトラブル解決がもっと楽しくなりますよ。これからも頑張って学習を続けていきましょうね!」

生徒

「はい!ありがとうございます。まずは自分の環境で、テスト用のライブラリパスを追加して試してみます!」

関連記事:
カテゴリの一覧へ
新着記事
New1
情報セキュリティマネジメント試験
AESとは?初心者でもわかる現代暗号方式の基本と仕組みをやさしく解説
更新記事
New2
基本情報技術者試験
WWWとは?初心者でもわかるワールドワイドウェブの基本と仕組みをやさしく解説!
更新記事
New3
Linux
lsmodコマンドの使い方を完全ガイド!Linuxのカーネルモジュール一覧を確認する方法
新規投稿
New4
情報セキュリティマネジメント試験
ダークウェブとは?初心者でもわかる意味・仕組み・危険性をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
342
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
DHCP
233
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.4
Java&Spring記事人気No4
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
CPU
155
CPUとは何かを完全解説!初心者でもわかるコンピュータの頭脳の仕組み
No.6
Java&Spring記事人気No6
情報セキュリティマネジメント試験
ソフトウェアとは何かを完全解説!初心者でもわかる基本と役割
No.7
Java&Spring記事人気No7
基本情報技術者試験
CGI
147
CGIとは?初心者でもわかるWebとプログラムのつながりを解説!
No.8
Java&Spring記事人気No8
基本情報技術者試験
ビット(bit)とは?デジタルデータの最小単位をわかりやすく解説