When a symbol reference from the object being created is satisfied by a definition within a shared object, the symbol remains undefined. The relocation information associated with the symbol 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.
Objects can also be created using the link-editor's -B direct option. With this option the relationship between the referenced symbol and the object that provides the symbol's definition is maintained within the object being created. The runtime linker uses this information to 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. Therefore, use of the -z defs option is recommended. Direct binding can significantly reduce the symbol lookup processing required at runtime. See Direct Binding for more details on this runtime binding model.