ABI解決什么問題

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中,目標文件的二進制格式、程序庫等等。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,951評論 19 139
  • 一、溫故而知新 1. 內存不夠怎么辦 內存簡單分配策略的問題地址空間不隔離內存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 7,880評論 0 27
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,381評論 25 708
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,766評論 18 399
  • 場景:鑒哥哥:是我副業的一個搭檔,很有正面能量的一個人。 他的標簽經常就是:顏值高;陽光;有才華;暖男;萌爸;漫畫...
    二瘋的戰略營銷頻道閱讀 2,517評論 0 0