Removing Unused Material
The inclusion of functions and data from input relocatable object files, when this material is not used by the object being built, is wasteful. This unneeded material causes the object to be larger than necessary, resulting in added overhead when the object is used at runtime.
References to unused shared object dependencies are also wasteful. Particularly in the absence of lazy loading, these references result in the unnecessary loading and processing of these shared objects at runtime.
Unused sections, unused relocatable object files, and unused shared object
dependencies can be diagnosed during a link-edit by using the link-editors debugging
option -D unused
.
Unused files and dependencies are also diagnosed when using the
-z guidance
option.
Unused sections, unused files, and unused dependencies should be removed from the
link-edit. This removal reduces the cost of the link-edit, and reduces the runtime cost
of using the object being built. However, if removing these items is problematic, unused
material can be discarded from the object being built by using the
-z discard-unused
option.