ABI解決什麼問題

weixin_34279579發表於2017-09-30

1. ABI 解決什麼問題

一個應用程式的執行,需要諸多相關的庫檔案來支撐的。在Windows當中的庫檔案是*.dll(動態連結庫)而Linux當中的庫檔案是*.so(共享物件)。這樣編寫的程式,是不能跨平臺的,為解決這樣的問題,ABI應運而生(Application Binary Interface 應用程式二進位制介面)。

2. ABI 是什麼

每個作業系統都會為執行在該系統下的應用程式提供應用程式二進位制介面(ABI)。ABI包含了應用程式在這個系統下執行時必須遵守的變成約定,一系列的系統呼叫和使用這些系統呼叫的方法,以及關於程式可以使用的記憶體地址和使用機器暫存器的規定。

3 . ABI不同於API

應用二進位制介面,描述了應用程式和作業系統之間,一個應用和它的庫之間,或者應用的組成部分之間的低層介面。

ABI不同於應用程式介面(API),API定義了原始碼和庫之間的介面,因此同樣的程式碼可以在支援這個API的任何系統中編譯,然而ABI允許編譯好的目的碼在使用相容ABI的系統中無需改動就能執行。

ABI掩蓋了各種細節,例如:呼叫約定(控制著函式的引數如何傳送以及如何接受返回值);系統呼叫的編碼和一個應用如何向作業系統進行系統呼叫;以及在一個完整的作業系統ABI中,目標檔案的二進位制格式、程式庫等等。

相關文章