dynamic linker
The small program that runs before main in a dynamically linked program, finds its shared libraries, and connects the calls to them.
The dynamic linker (ld-linux.so / ld.so on Linux, dyld on macOS, the loader in ntdll on Windows) maps a program's shared libraries, resolves their symbols, applies load-time relocations and runs library initializers before transferring control to the program.
See also