APIとABI?

2013年01月07日 22:14

 

言葉の整理。
 
API;
Application Programming Interface
ソースコードベース
アプリケーションを簡潔にプログラムできるように設定されたインタフェースの仕様。
(アプリケーションから利用できる、OSやプログラミング言語で用意されたライブラリなどの機能の入り口)
POSIXのような国際規格、マイクロソフトの Windows API のようなベンダーによる文書、プログラミング言語のライブラリなど。
 
ABI;
Application Binary Interface
バイナリインタフェース
アプリケーションプログラムとOSの間の低レベルのインタフェース。ソフトの互換性をバイナリーレベルで保証する仕様。
命令体系が同じマイクロプロセッサやOSを搭載したコンピューター同士で、アプリケーションソフトを書き換えなくても動作させることが可能となる。
Linux Standard Base(複数のLinuxディストリビューションの共同プロジェクト)など。
 
*UNIX系OSは様々なものがあり、それぞれで仕様が異なることから、ABIは共通ではない。UNIX系と言っても、ソースリストの水準では互換性があるが、バイナリーの水準では殆ど互換性がない。代表的なPC UNIXであるFreeBSDとLinuxで互いに互換性がないのはもちろんのことだが、Linuxであっても、Linuxディストリビューションごとに互換性がなく、同じ実行ファイルが利用できる保証はない。