![]() Prog is being built with an explicit reference to libbar.so, and because libbar.so has a dependency on libfoo.so, an implicit reference to libfoo.so from prog is established.īecause main.c made a specific reference to the interface provided by libfoo.so, prog really has a dependency on libfoo.so. ![]() For example, continuing with the files main.c and foo.c used in the previous example: Symbols can also remain undefined when a symbol reference in a relocatable object is bound to a symbol definition in an implicitly defined shared object. This error can be detected during the initial execution and testing of an application, more complex execution paths can result in this error condition taking much longer to detect, which can be time consuming If an unavailable symbol reference is required during the execution of a process, a fatal runtime relocation error will occur. Take care when using the -z nodefs option. If you want to allow undefined symbols, as in cases like the previous example, then the default fatal error condition can be suppressed by using the link-editor's -z nodefs option. In a similar manner, a symbol reference within a shared object that is never matched to a symbol definition when the shared object is being used to create a dynamic executable will also result in When a symbol reference in a relocatable object is never matched to a symbol definition: Link-editor is generating an executable output file, the link-editor's default behavior is to terminate with an appropriate error message should any symbols remain undefined. The effect of these undefined symbols on the link-edit process can vary according to the type of output file being generated, and possibly References are referred to as undefined symbols. Input files have been read and all symbol resolution is complete, the link-editor searches the internal symbol table for any symbol references that have not been bound to symbol definitions.
0 Comments
Leave a Reply. |