Remember a.out binaries? They were the file format of the Linux kernel till
around 1995 when ELF took over. ELF is better. It allows you to load shared
libraries anywhere in memory, while a.out binaries need you to register
shared library locations. That's fine at small scales, but it gets to be
more and more of a headache as you have more and more shared libraries to
deal with. But a.out is still supported in the Linux source tree, 25 years
after ELF became the standard default format.