Is there a simple and efficient way to know that a given dynamically linked ELF is missing a required .so for it to run, all from the inside of
ELF
Have you tried dlopen function? you can use this to load a dynamic library (or, for your case, to ckeck if a library can be loaded).
dlopen
Having a list of needed libraries is more difficult, take a look to handle_dynamic function on readelf source
handle_dynamic