Interfejs binarny aplikacji
![]() | Ten artykuł od 2022-06 wymaga zweryfikowania podanych informacji. Należy podać wiarygodne źródła w formie przypisów bibliograficznych. Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte. Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary) Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu. |
Interfejs binarny aplikacji, ABI (od ang. application binary interface) – zespół reguł i ustaleń, które decydują o współpracy między programami i bibliotekami a systemem operacyjnym lub między różnymi komponentami danej aplikacji. ABI różni się od API tym, że dotyczy oprogramowania w wersji skompilowanej, a więc binarnej (zwanej również wykonywalną), a nie w formie kodu źródłowego.
Interfejs binarny aplikacji definiuje konwencję wywołań, która określa sposób wywoływania podprogramów, przekazywania im argumentów oraz odbierania zwracanej wartości, liczbę, znaczenie i sposób wywoływania (syscall), a także format plików obiektowych lub bibliotek.
Kompletny ABI, na przykład Intel Binary Compatibility Standard (iBCS), pozwala na uruchamianie aplikacji z poziomu systemu operacyjnego – wspierającego konkretny ABI – na innym systemie operacyjnym, bez zbędnych modyfikacji.
W systemach uniksopodobnych nie dba się zbytnio o to, by programy były zgodne na poziomie ABI, ponieważ ważniejsza jest zgodność na poziomie interfejsu programowania aplikacji, czyli kodu źródłowego. Mimo że większość nowoczesnych uniksów używa formatu ELF dla plików wykonywalnych, to jednak programów z danego systemu uniksowego zwykle nie daje się poprawnie uruchomić w innym. Wyjątek stanowią systemy z rodziny BSD, które umożliwiają, dzięki zastosowaniu specjalnego trybu ABI, uruchamianie w nich programów linuksowych.