読み方 : ドットエスオーファイル

.soファイル【shared object file】

概要

.soファイルとは、LinuxなどのUNIX系OSで使われる共有ライブラリの標準的なファイル形式。複数のプログラムが共通して利用できるコードをまとめたファイルである。ファイル名拡張子「.so」は “shared object” の略とされる。
.soファイルのイメージ画像

プログラムは様々な機能を必要とするが、そのすべてを一つの実行ファイルに組み込むと、ファイルサイズが肥大化し、メモリの無駄も生じる。.soファイルは多くのプログラムに共通する処理を切り出したファイルで、複数のプログラムが同じコードを再利用できる仕組みを実現している。

共有ライブラリは実行時に実行プログラムに「動的リンク」(dynamic link)される仕組みであり、プログラム本体には関数や変数の参照情報のみが含まれる。実行時には動的リンカローダが.soファイルを読み込み、必要なシンボル解決を行ってアドレスを割り当てる。これにより複数のプロセスが同一コード領域を共有でき、ディスク容量やメモリ使用量の削減が図られる。Linuxではld.soやld-linuxといったローダがこの処理を担う。

Linuxでは「libm.so」(数学関数)や「libc.so」(C言語標準関数)など、システムが提供する基本的な.soファイルが多数存在し、多くのアプリケーションがこれらを読み込んで動作している。実行時の.soファイルの探索は標準ディレクトリのほか、LD_LIBRARY_PATH環境変数や、ビルド時のリンカのrpathオプションなどに基づいて行われる。ファイル配置や権限の管理も動作に影響を与えることがある。

.soファイルはWindowsにおける「.dllファイル」と形式は異なるが役割はよく似ている。.soファイルは動的ライブラリファイル形式だが、Linuxではプログラムコンパイルおよびビルド時に静的リンクする静的ライブラリの形式として「.aファイル」(“archive” の略とされる)が用意されている。これは開発時に実行ファイルに連結され、その状態で配布される。

ファイル名には慣例として「lib」という接頭辞が付き、「lib機能名.so.バージョン番号」という形式が一般的である。バージョン番号を含む命名規則により、新旧のライブラリを並存させることが可能となっており、異なるバージョンライブラリを必要とする複数のプログラムを同一システム上で動作させることができる。

(2026.4.19更新)
 

他の辞典等による「.soファイル」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。