Paul,

The point is that there were a number of different shared library implementations for UNIX over the years.  That was one of the 'knocks' when comparing VMS to 4.1BSD in the early 80s.   VMS had shared libraries from the start.   I'm pretty sure the first unix to support shared libraries was CMU's Mach using its modified about called macho, which lives today in Mac OSX.     BSD4.2 had started to implement it, but it was incomplete so folks like Sun and Masscomp each did their own scheme, both based on modified a.out. A big problem was every vendor messed with a.out in a different way -- so Sun's, Masscomp and Apollo's versions were all a little different and you a linker guy, you know that a.out was not a great format for same.

With System V.3, AT&T introduced was an a new file format, called the Common Object File Format - a.k.a. COFF. SVR3 supported shared libs.  In fairness, COFF was a huge improvement over a.out, but it was done when AT&T was in its 'consider it standard' time and trying to force its will and wanted licensing fees.   Let's say that failed for non-technical reasons.  Unfortunately, it lead to more confusion and we ended up a number of different COFF-almost, sort-of, extensions.  IIRC, IBM went with a modified COFF, but again we were in a cold war of who could do what.  I remember that the time, the Gnu guys wrote tool called 'robitussin' - which 'cured COFFs.'

With, AT&T's SVR4 release the world was introduced to the 'Extended Linker Format' - ELF, which fixed a number of issues with COFF, the primary one being that it could loaded images faster and you could page from directly, which neither a.out nor COFF could easily.  Again IIRC, SVR4's linker could handled AT&T's COFF files.

I have never known the legals on it, but some how the details of ELF did become public and somebody reimplemented the GNU compilers to use it and AT&T for whatever reason did not complain (maybe the had their hands full at time with BSDi case).   Anyway, eventually both Linux and FreeBSD switched to that version of Gnu and its pretty much been stable since.