The code within a dynamic executable is typically position-
dependent, and is tied to a fixed address in memory. Shared
objects, on the other hand, can be loaded at different addresses
in different processes. Position-independent code is not tied to
a specific address. This independence allows the code to execute
efficiently at a different address in each process that uses the
code. Position-independent code is recommended for the creation
of shared objects. The compiler can generate position-
independent code under the -K pic option. If a shared object is
built from position-dependent code, the text segment can require
modification at runtime. This modification allows relocatable
references to be assigned to the location that the object has
been loaded. The relocation of the text segment requires the
segment to be remapped as writable. This modification requires a
swap space reservation, and results in a private copy of the
text segment for the process. The text segment is no longer
sharable between multiple p