Most Linux problems stem from an obsession with saving drive space, and a failure to differentiate between system and application code.
They want programs to load common functionality from shared libraries that are stored in the system files, but these libraries are constantly changing and breaking programs. It makes no sense.
There's an easy solution, and that is to just place the required library files (in .so format) in the same folder as your program, and use a launcher script to tell the system to load the shared libraries from the same folder:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./myprogram
This should really just be the default behavior, like it is on Windows.