You seem to forget that most programs only need parts of libraries.
It could be possible that your programs use different parts of
each library.
The memory inefficiency of static linking depends on the size
of the part of the library used by all programs.
Static linking might not be as inefficient as most people think.