Binärt (binärt) applikationsgränssnitt ( engelska a pplication binary interface , ABI ) är en uppsättning avtal för applikationsåtkomst till operativsystemet och andra lågnivåtjänster, utformade för portabilitet av körbar kod mellan maskiner som har kompatibla ABI:er [ 1 ] . Till skillnad från API , som reglerar kompatibilitet på källkodsnivå [2] , kan ABI ses som en uppsättning regler som tillåter länkaren att kombinera kompilerade komponentmoduler utan att kompilera om hela koden, samtidigt som den fortfarande definierar ett binärt gränssnitt [3 ] .
Det binära gränssnittet för applikationen reglerar [2] [3] :
Det binära gränssnittet för applikationen beskriver funktionaliteten som tillhandahålls av OS -kärnan och instruktionsuppsättningsarkitekturen (inga privilegierade kommandon) [5] . Om programmeringsgränssnittet för applikationer för olika plattformar är detsamma kan koden för dessa plattformar kompileras utan ändringar. Så länge som både API och ABI är samma för olika plattformar, kan binärfilerna portas till dessa plattformar utan modifiering. Om plattformarnas API:er eller ABI:er skiljer sig åt, måste koden ändras och kompileras om. API:et tillhandahåller inte runtime -kompatibilitet - detta är uppgiften för det binära gränssnittet.
Embedded Application Binary Interface ( eng. embedded a pplication b inary inerface , EABI ) är en uppsättning konventioner för användning i inbäddad programvara som beskriver [6] :
Om en objektfil genererades av en kompilator som stöder EABI , blir det möjligt för den objektfilen att länkas av vilken länk som helst som stöder samma EABI.
Huvudskillnaden mellan EABI och ABI i ett operativsystem för allmänna ändamål är att privilegierade kommandon är tillåtna i applikationskoden, och dynamisk länkning ( länkning ) krävs inte (och ibland helt förbjuden), och även, för att spara minne, en mer kompakt stackorganisation används. .