When a symbol reference from the object being created is satisfied by a definition within a shared object, the symbol remains undefined and its associated relocation information provides for its lookup at runtime. The shared object that provided the definition typically becomes a dependency.
The runtime linker employs a default search model to locate this definition at runtime. It typically searches each object, starting with the dynamic executable, and progressing through each dependency in the same order in which the objects were loaded (see "Symbol Lookup").
Objects can also be created using the link-editor's -Bdirect option. With this option the relationship between the referenced symbol and the object that provides its definition is maintained within the object being created. Using this information, the runtime linker can directly bind the reference to the object that defines the symbol, thus bypassing the default symbol search model. Direct binding information can only be established to dependencies specified with the link-edit, thus the -zdefs option is recommended. This direct binding can significantly reduce runtime symbol lookup processing. See "Direct Binding" for more details on this runtime binding model.