RE: your comment on 'never seen it in Windows'
Windows avoids this because nearly every program installs an extra copy of the major libs that it uses in its own directory, so you end up with dozens of copies of the same libs installed. This is why you often see
setup.exe or similar installers re-installing the same libs like Direct X or Dot Net or Visual C.
Windows does support versioned DLLs, similar to how Linux supports versioned shared libraries but Microsoft encourages app developers to include with their app the specific version that their software depends on - something that was perhaps necessary in the pre-internet age where it might be difficult for users to acquire copies of essential libraries.
It's possible to do the same in Linux but a) it's discouraged as being both wasteful and lazy (on the part of both app developers and lib developers) and b) Linux doesn't, by default, look in the same directory as a program for its shared libraries - it only looks in the directories specified by LD_LIBRARY_PATH. Some programs come with shell script wrappers to change LD_LIBRARY_PATH before running the binary executable.