An object file may contain references to external objects (functions and variables), which the linker will attempt to resolve by matching them to definitions found in other object files and libraries.
Usually, at least one library file is specified in the input list. A library is just a collection of AOF files stored in an ARM Object Library Format file. The important difference between object files and libraries is:
The linker processes its input list as follows:
the library is searched for members containing symbol definitions which match currently unsatisfied, non-weak references;
<HTML><ul></HTML> <HTML><li></HTML>each such member is loaded, satisfying some unsatisfied references (including possibly weak ones), and maybe, creating new unsatisfied references (again, maybe including weak ones);<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>the search is repeated until no further members are loaded.<HTML></p></HTML> <HTML><p></HTML>Each library is processed in turn, so a reference from a member of a later library to a member of an earlier library cannot be satisfied. As a result, circular dependencies between libraries are forbidden.<HTML></p></HTML> <HTML><p></HTML>It is an error if any non-weak reference remains unsatisfied at the end of a linking operation, other than one which generates partially-linked, relocatable AOF.<HTML></p></HTML><HTML></li></HTML><HTML></ul></HTML>