The following table summarizes the actions performed by the static linker, which runs on the development host, and by the runtime linker, which runs on the target.
|Link||Relocatable Executable||Dynamic executable|
|Static Linker||.a Static linker adds necessary objects (.o) of a static library (.a) to the executable.||.a Static linker adds necessary objects (.o) of a static library (.a) to the executable. .so Static linker adds the library to the list of libraries to load at actor start-up (afexec).|
|Runtime Linker (afexec)||-||.so At actor start-up, libraries are loaded and linked by the runtime linker. Libraries to load are defined either at static link, or in the LD_PRELOAD environment variable. The runtime linker uses a library search path to find dynamic and shared libraries.|
|Runtime Linker (dlopen)||-||.so Application explicitly asks the runtime linker to dynamically load and link a dynamic library, using the dlopen() function of the dynamic linking API.|
Dynamic linking of libraries applies recursively to library dependencies: when a library is loaded, all the libraries it uses are also loaded.