FHSの「/lib,lib64」ディレクトリの概要
目次
はじめに
FHS (Filesystem Hierarchy Standard) は、LinuxやUnix系のオペレーティングシステムで使用されるディレクトリ構造の標準を定めた規格です。この規格により、各ディレクトリの役割が明確に定義されており、システムの管理や運用が容易になります。本記事では、FHS規格における /lib
と /lib64
のディレクトリについて、それぞれの概要と役割、違いについて解説します。
/lib ディレクトリとは?
/lib
ディレクトリは、Linuxシステムの基本的なライブラリファイルが格納される場所です。ライブラリファイルとは、プログラムの実行時に使用される共有ライブラリのことで、システムやアプリケーションの動作に不可欠なコードが格納されています。
/lib ディレクトリの役割
- 基本的なシステムライブラリの格納:
/lib
には、システムの動作に必要不可欠な基本的な共有ライブラリが含まれています。これらのライブラリは、システムのカーネルや他の基本的なプログラム(例:シェルやブートローダー)に依存しています。 - プログラムの動作をサポート:多くのアプリケーションやシステムツールは、これらのライブラリを呼び出して特定の機能を実行します。たとえば、
/bin
や/sbin
にある基本的なコマンドも、これらのライブラリに依存しています。
/lib64 ディレクトリとは?
/lib64
は、64ビットシステムで使用される共有ライブラリを格納するためのディレクトリです。64ビットのアーキテクチャでは、/lib
と分けて、64ビット専用のライブラリを lib64
に配置することで、32ビットシステムと区別しています。
/lib64 ディレクトリの役割
- 64ビットシステム用のライブラリ:
/lib64
には、64ビットアーキテクチャのシステムやプログラムで使用されるライブラリが格納されています。これにより、64ビットシステムのパフォーマンスと互換性が確保されます。 - マルチアーキテクチャサポート:一部のシステムでは、32ビットと64ビットの両方のアプリケーションが動作することがあります。その場合、32ビットライブラリは
/lib
に、64ビットライブラリは/lib64
に格納されます。これにより、同じシステム上で異なるアーキテクチャのプログラムを同時に実行することが可能です。
/lib と /lib64 に含まれる代表的なライブラリ
1. libc.so
libc.so
は、C言語の標準ライブラリで、ほとんどのLinuxプログラムが依存しています。このライブラリは、メモリ管理や文字列操作、ファイル操作など、基本的な機能を提供します。32ビットシステムでは /lib
に、64ビットシステムでは /lib64
に格納されます。
2. libm.so
libm.so
は、数学関数を提供するライブラリで、三角関数や指数関数など、数値計算に必要な機能をサポートします。
3. ld-linux.so
ld-linux.so
は、Linuxのダイナミックリンカであり、プログラムの実行時に必要な共有ライブラリを検索してロードする役割を担います。
/lib と /lib64 の違い
- アーキテクチャの違い:
/lib
は32ビットシステムで使用されるライブラリを格納し、/lib64
は64ビットシステムで使用されるライブラリを格納します。64ビットシステムでは、両方のディレクトリが存在することが一般的です。 - 互換性のための分離:32ビットアプリケーションが64ビットシステム上で動作することを可能にするため、32ビット用のライブラリは
/lib
に、64ビット用のライブラリは/lib64
に分けて格納されます。この分離により、異なるアーキテクチャのライブラリが衝突することなく共存できます。
まとめ
/lib
と /lib64
は、Linuxシステムの動作に欠かせない基本的なライブラリが格納されるディレクトリです。FHS規格では、32ビットシステム用のライブラリは /lib
に、64ビットシステム用のライブラリは /lib64
に格納することで、異なるアーキテクチャのプログラムが同時に動作できるように設計されています。これらのディレクトリは、システムの安定性と互換性を保つために非常に重要な役割を果たしています。