Stephen Kitt wrote in https://unix.stackexchange.com/a/448943/674
ld.sois a shared ELF object, but it doesn’t require an interpreter (it has no .interp entry); this is typical of libraries (shared executables always require an interpreter; otherwise they’re static, not dynamic).
Is an ELF object file a "shared executable" if and only if it has an
.interp entry ?
What does "shared executables" mean? Is it the same as "shared libraries"?
Or does "shared executables" mean "partially linked executables"? In CSAPP
linux> gcc -o prog2l main2.c ./libvector.so
This creates an executable object ﬁle prog2l in a form that can be linked with libvector.so at run time.
... When the loader loads and runs the executable
prog2l, it loads the partially linked executable
prog2l, using the techniques discussed in Section 7.9. Next, it notices that
.interpsection, which contains the path name of the dynamic linker, which is itself a shared object (e.g.,
ld-linux.soon Linux systems).