I do not understand the necessity of introducing the options of --as-needed and --no-add-needed! Why adding or not adding DT_NEEDED tag is so important that two separate options are considered for ld? I wonder if anybody can explain this tag and the situation when a dynamic library references a symbol in another dynamic library. If i create a dynamic library with some external references and then link it with my program, what happens after executing my program?