Linux kernel interfaces: Difference between revisions

Content deleted Content added
No edit summary
Tags: Visual edit Mobile edit Mobile web edit
No edit summary
Tags: Visual edit Mobile edit Mobile web edit
Line 56:
 
== Linux ABI ==
The term Linux ABI refers to a kernel–user space ABI. The [[Application binary interface]] refers to the compiled binaries, in [[machine code]]. Any such ABI is therefore bound to the [[instruction set]]. Defining a useful ABI and keeping it stable is less the responsibility of the Linux kernel developers or of the developers of the GNU C Library, and more the task for [[Linux distribution]]sdistributions and [[Independent software vendor]] (ISVs) who wish to sell and provide support for their proprietary software as binaries only for such a single Linux ABI, as opposed to supporting multiple Linux ABIs.
{{Expert needed|Free and open-source software|ex2=Software|ex3=Computing|reason=This section mostly ignores the kernel-userspace ABI (that is very real and important thing) and jumps into userspace-to-userspace APIs|date=February 2018}}
[[File:Linux API and Linux ABI.svg|thumb|upright=1.5|The Linux API and the Linux [[Application binary interface|ABI]] ]]
{{Main article|x32 ABI|Linux Standard Base}}
 
An ABI has to be defined for every instruction set, such as [[x86]], [[x86-64]], [[MIPS architecture|MIPS]], [[ARMv7-A]] (32-Bit), [[ARMv8-A]] (64-Bit), etc. with the [[endianness]], if both are supported.
The term Linux ABI refers to a kernel–user space ABI. The [[Application binary interface]] refers to the compiled binaries, in [[machine code]]. Any such ABI is therefore bound to the [[instruction set]]. Defining a useful ABI and keeping it stable is less the responsibility of the Linux kernel developers or of the developers of the GNU C Library, and more the task for [[Linux distribution]]s and [[Independent software vendor]] (ISVs) who wish to sell and provide support for their proprietary software as binaries only for such a single Linux ABI, as opposed to supporting multiple Linux ABIs.
 
It should be able to compile the software with different compilers against the definitions specified in the ABI and achieve full binary compatibility. Compilers that are [[free and open-source software]] are e.g. [[GNU Compiler Collection]], [[LLVM]]/[[Clang]].
An ABI has to be defined for every instruction set, such as [[x86]], [[x86-64]], [[MIPS architecture|MIPS]], [[ARMv7-A]] (32-Bit), [[ARMv8-A]] (64-Bit), etc. with the [[endianness]], if both are supported.
 
It should be able to compile the software with different compilers against the definitions specified in the ABI and achieve full binary compatibility. Compilers that are [[free and open-source software]] are e.g. [[GNU Compiler Collection]], [[LLVM]]/[[Clang]].
 
End-users are in fact not all interested in the Linux API (or the Windows API), but in the ABIs.