ELF is flexible and extensible by design, and it is not bound to any particular processor or architecture. This has allowed it to be adopted by many different operating systems on many different platforms.

An ELF file has two views: The program header shows the segments used at run-time, whereas the section header lists the set of sections of the binary.

Data referred to by entries in the program header table or section header table

The segments contain information that is necessary for runtime execution of the file, while sections contain important data for linking and relocation. Any byte in the entire file can be owned by at most one section, and there can be orphan bytes which are not owned by any section.

The ELF header defines whether 32- or 64-bit addresses are to be used. The header itself contains three fields that are affected by this setting and offset other fields that follow them. The 64-bit header is 64 bytes long.

The Unix file utility can display some information about ELF files, including the instruction set architecture for which the code in a relocatable, executable, or shared object file is intended, or on which an ELF core dump was produced.

86open was a project to form consensus on a common binary file format for Unix and Unix-likeoperating systems on the common PC compatiblex86 architecture, in order to encourage software developers to port to the architecture.[14] The initial idea was to standardize on a small subset of Spec 1170, a predecessor of the Single UNIX Specification, and the GNU C Library (glibc) to enable unmodified binaries to run on the x86 UNIX-like operating systems. The project was originally designated "Spec 150".

The format eventually chosen was ELF, specifically the Linux implementation of ELF, after it had turned out to be a de facto standard supported by all involved vendors and operating systems.

The group started email discussions in 1997 and first met together at the Santa Cruz Operation offices on August 22, 1997.

With the BSDs having long supported Linux binaries (through a compatibility layer) and the main x86 Unix vendors having added support for the format, the project decided that Linux ELF was the format chosen by the industry and "declare[d] itself dissolved" on July 25, 1999.[16]