[ C++で開発 ]

バイナリ互換性

動的共有ライブラリ・ファイルを使う目的の一つに、ライブラリ側の修正時にライブラリ・ファイルだけを差し替えるだけで対応できることがあります。しかし、C++の場合、ライブラリ・ファイルだけを差し替える修正(通常「バイナリ互換性」という)なのか、ライブラリを利用するクライアントコードも再コンパイルが必要なのか判断するのはかなり難しい課題です。たいていは判断が面倒なので、「全コンパイル」することが多いですね。

用語の定義

本記事において使用する用語の定義を以下に記述します。

バイナリ・ファイル
CPUが実行可能な命令コードを含んだ実行ファイルおよびライブラリファイルの総称

ABI

C++は、コンパイラの種類によって、または同じコンパイラでもバージョンの違いによって、バイナリ・ファイルのシンボル方式が異なります。

参考資料

Linux/GCCにおけるバイナリ互換