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
As per ld.so(8), setting the environment variable LD_TRACE_LOADED_OBJECTS to a non-empty string will give ldd-like results (instead of executing the binary or library normally).
LD_TRACE_LOADED_OBJECTS
ldd
setenv("LD_TRACE_LOADED_OBJECTS", "1", 1); FILE *ldd = popen("/lib/libz.so");