C++ ダイナミック ライブラリは通常、.so 接尾辞が付いたファイルとして保存され、これらのファイルは共有オブジェクトとも呼ばれます。.so ファイルは、Linux および UNIX 系システム上でダイナミック リンク ライブラリを表すために使用される規則的な命名方法です。
動的ライブラリ (.so ファイル) には次の特徴があります。
- 動的ロード: 動的ライブラリは、プログラムの実行中にメモリにロードされ、プログラムと動的にリンクされます。静的ライブラリと比較すると、コンパイル時にコードを最終的な実行可能ファイルにコピーする必要がありません。
- 共有使用: 複数のプログラムが同じダイナミック ライブラリ ファイルを共有して、ディスク領域の消費を削減できます。複数のプログラムが同じダイナミック ライブラリに依存する場合、メモリ内に保持する必要があるライブラリのインスタンスは 1 つだけなので、メモリ スペースが節約されます。
- 実行時の依存関係: プログラムは、正しいバージョンの動的ライブラリが存在し、実行時にアクセスできることを確認する必要があります。正しいダイナミックライブラリが見つからない場合、またはバージョンが一致しない場合、プログラムが実行できなかったり、エラーが発生したりすることがあります。
- 動的更新: 動的ライブラリの更新は比較的簡単です。動的ライブラリは、プログラム全体を再コンパイルしなくても、.so ファイルを置換またはアップグレードすることで更新できます。
- シンボル テーブル: ダイナミック ライブラリには関数や変数などのシンボルに関する情報が含まれているため、他のプログラムはコンパイル時にこれらのシンボルを参照できます。シンボル テーブルを使用すると、他のプログラムがこれらのシンボルを解決し、リンク時に動的ライブラリとのリンクを確立できます。
.so ファイルは特定の形式のバイナリ ファイルであり、通常はコンパイラとリンカー ツールチェーンがこれらのファイルの生成と処理を担当することに注意してください。ダイナミック ライブラリを使用する場合は、.so ファイルが正しいパスに配置され、プログラムからアクセスできることを確認する必要があります。