When it is said that in dynamic linking the linker resolves the addresses of shared libraries at run time, does that mean the same linker that is used in static linker is called at run time? For example when using the gcc such as gcc mysource.c -o myprog
does it skip the linking step if dynamic linking is used? If dynamic linking is used, is the same gcc linker called each time the program is run, or is this linker somehow different (i.e. comes with the operating system)?
If dynamic linking is used and linking technically hasn't happened yet when the executable file is outputted, how come the file is executable (since it missed the stage of linking)? Or is it not really executable until the dynamic linking has happened?