Stephen Kitt wrote in https://unix.stackexchange.com/a/448943/674
ld.so
is 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 file 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 executableprog2l
, using the techniques discussed in Section 7.9. Next, it notices thatprog2l
contains a.interp
section, which contains the path name of the dynamic linker, which is itself a shared object (e.g.,ld-linux.so
on Linux systems).