Categories
Linux Mastering Development

What is “shared executables”?

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 executable prog2l, using the techniques discussed in Section 7.9. Next, it
notices that prog2l 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).

Leave a Reply

Your email address will not be published. Required fields are marked *