Application binary interface: Difference between revisions

Content deleted Content added
References
Corrected some wikis
Line 1:
In [[computer software]], an '''application binary interface''' ('''ABI''') describes the low-level [[interface (computing)|interface]] between an application program and the [[operating system]], between an application and its [[library (computer science)|libraries]], or between component parts of the application. An ABI differs from an [[application programming interface]] (API) in that an API defines the interface between [[source code]] and libraries, so that the same source code will [[compiler|compile]] on any system supporting that API, whereas an ABI allows compiled [[object code]] to function without changes on any system using a compatible ABI.
 
ABIs cover details such as the [[calling convention]], which controls how [[function (programming)|function]]s' arguments are passed and return values retrieved; the [[system call]] numbers and how an application should make system calls to the operating system; and in the case of a complete operating system ABI, the binary format of [[object file]]s, program libraries and so on. A complete ABI, such as the [[Intel]] Binary Compatibility Standard (iBCS),<ref>[http://www.everything2.com/index.pl?node=iBCS Intel Binary Compatibility Standard (iBCS)]</ref> allows a program from one operating system supporting that ABI to run without modifications on any other such system. Other ABIs standardize details such as the [[name mangling#Name mangling in C++|C++ name decoration]]<ref>[http://www.codesourcery.com/cxx-abi/abi.html Itanium C++ ABI] (compatible with multiple architectures)</ref> and calling convention between compilers on the same platform, but do not require cross-platform compatibility.
Line 5:
Among [[Unix-like]] operating systems, where there are often many related but incompatible operating systems running on one hardware platform (particularly [[Intel 80386]]-compatible systems), there have been several attempts to standardise the ABI to reduce the effort required by application vendors to port their programs to different systems. However, to date none of these have met with much success, though the [[Linux Standard Base]] is trying to do this for [[Linux]].
 
If the complete ABI and the API of one operating system are implemented on another operating system, software written for the first operating system will also run natively on the second. For example, many popular operating systems such as [[Mac OS X]], the various [[Berkeley Software Distribution|BSDs]] and [[Microsoft Windows]] ([[Windows Services for Unix]]) implement the [[POSIX]] API, which is the native API for [[Unix]] and [[Unix-like]] (including [[Linux]]) operating systems. However, they do not implement the same '''ABI''', therefore applications need to be [[Compiler|recompiled]], making slight changes to the code or [[Portingporting|ported]]; [[POSIX]] applications do not run natively on these operating systems.
 
{{Mergefrom|Embedded Application Binary Interface|date=October 2007}}