lib64 ディレクトリは、システムの安定した動作において重要な役割を果たします。
lib64ファイル
lib64 フォルダーには主に、動的ライブラリ、静的ライブラリ、カーネル モジュールなど、プログラムで直接ロードして使用できる 64 ビット コード モジュールが保存されます。これらのファイルは、プログラムの実行に重要です。
Linux システムでは、通常、lib64 フォルダーは 64 ビット ライブラリ ファイルのバイナリ ファイルを保存するために使用されます。
ファイルには主に次の種類があります。
-
ダイナミック リンク ライブラリ ファイル (.so): これらは、プログラムによってファイル拡張子として直接ロードおよびリンクできる共有ライブラリです
.so
。libopencv.so など。 -
静的リンク ライブラリ ファイル (.a): これらは、静的リンクに使用される、
.a
拡張子が付いている静的アーカイブ ファイルです。たとえばlibxxx.a
。 -
Linux カーネル モジュール ファイル (.ko): カーネルによって動的にロードできる一部のモジュールには拡張子が
.ko
付いています。 -
プログラム実行ファイル: 一部のプログラム実行ファイルは、/usr/lib64/firefox など、lib64 フォルダーにも配置されます。
-
設定ファイル、ドキュメントなど
-
lib フォルダーと比較すると、lib64 は 64 ビット ライブラリ ファイルを保存するために特別に使用されますが、lib は 32 ビット バージョンのライブラリです。これは複数のシステムをサポートする場合に必要です。
ダイナミックリンクライブラリ
動的ライブラリは通常、Linux 上のファイル.so
と Windows 上のファイルを使用します.dll
。動的ライブラリを作成すると、コードが広く再利用可能になり、これはソフトウェアを再利用する重要な方法です。動的リンクにより、プログラムのアップグレードと展開がより柔軟になります。
ダイナミック リンク ライブラリ (Dynamic Link Library、DLL) は、複数のプログラムで共有できるコードとデータを含むライブラリ ファイルです。リンク時に静的にロードされるのではなく、プログラムの実行時に動的にロードできます。
ダイナミック リンク ライブラリの主な特徴は次のとおりです。
-
共有: 複数のプログラムが動的ライブラリを同時に使用できるため、コードの重複が削減されます。
-
動的ロード: プログラムは、コンパイル時ではなく、実行時に動的ライブラリをロードします。
-
バージョン管理: プログラムを再コンパイルすることなく、動的ライブラリを個別にアップグレードできます。
-
依存関係の管理: ライブラリの依存関係を明確に定義し、必要なライブラリをオンデマンドでロードします。
-
言語の中立性: C、C++、Rust などの複数の言語呼び出しをサポートします。
-
実行時リンク: プログラムには動的ライブラリ コードを含める必要はなく、実行時にシンボルの解決と再配置のみを実行します。
-
スペースの節約: 複数のプログラムが同じメモリ ブロックを共有し、メモリ使用量を削減します。
静的リンクライブラリ
静的ライブラリは、コンパイル時にターゲット プログラムに直接挿入されるコード セグメントとみなすことができます。その主な利点は移植が容易であることですが、欠点はスペースを多く取り、繰り返しコードが多いことです。
スタティック リンク ライブラリ (Static Library) は、ダイナミック リンク ライブラリとは対照的に、プログラムのコンパイルおよびリンク段階でターゲット プログラムに統合されるライブラリ ファイルです。
静的ライブラリの主な特徴は次のとおりです。
-
静的追加: 静的ライブラリは、実行時に動的にロードされるのではなく、コンパイル時にターゲット プログラムに統合されます。
-
独立した存在: 静的ライブラリは再利用可能な独立したファイルです。
-
バージョン管理がない: プログラムは毎回静的ライブラリのスナップショットを使用するため、バージョンのアップグレードには不便です。
-
コードの重複: 複数のプログラムが同じ静的ライブラリに対してリンクしている場合、コードが重複します。
-
移植性: 静的ライブラリは、ライブラリ環境をインストールすることなく、プログラムと一緒にパッケージ化してデプロイできます。
-
言語関連: 静的ライブラリは通常、C++ などの特定の言語でコンパイルされます。
-
コンパイル時間の増加: コンパイル リンク時間が増加しました。
-
実行可能ファイルのサイズを増やす: ライブラリ コードが実行可能ファイルに追加されます。
カーネルモジュール
カーネル モジュール メカニズムは Linux カーネルの非常に重要な設計であり、カーネルを頻繁に再コンパイルすることなく、カーネル機能を動的に拡張したり、カーネル ドライバーを開発したりすることができます。Linux カーネルの拡張性を実現する鍵となります。
カーネル モジュール ファイルは、カーネル (Linux カーネル) に動的に挿入できるコード モジュールで、通常は拡張子が付いています.ko
。
カーネル モジュールの主な特徴は次のとおりです。
-
動的挿入: システムの実行中に再起動せずに、カーネルを動的に挿入し、insmod/modprobe コマンドを通じて実行できます。
-
アンロード可能: rmmod コマンドを使用して、実行中のカーネルからモジュールを動的にアンロードできます。
-
カーネルの拡張: カーネルのソース コードを変更せずに、カーネルの機能を拡張できます。
-
ハードウェア サポート: 多くのハードウェア ドライバー機能はカーネル モジュールとして実装されています。
-
依存関係の管理: 他のカーネル モジュールまたはシンボルへの依存関係を宣言できます。
-
バージョン管理: カーネル モジュールは、カーネルとは独立して更新できます。
-
最適化された再利用: 複数のコアが同じモジュールを再利用して、メモリ使用量を最適化できます。
-
開発の加速: 独立したカーネル開発とパッケージ化されたモジュールにより、開発をスピードアップできます。