HP-UX Linker and Libraries User's Guide
• Modules have been modified by the ld -s or ld -x options or tools (for example, strip(1)).
The incremental linking requires the parts of the output load module which are stripped out
with these options.
• Incompatible incremental linker version, when you run a new version of the incremental linker
on an executable created by an older version.
• New working directory, where the incremental linker performs an initial incremental link if
current directory changes.
• Archive or shared libraries are added/removed to/from the linker command line.
• Objects are added/removed to/from the linker command line.
Using Incremental Linking Options
To use incremental linking from your HP C (cc) or HP aC++ (aCC) compiler, specify the +ild
from your compiler command line.
If the output file does not already exist or if it was created without the +ild option, the linker
performs an initial incremental link. The output file produced is suitable for subsequent incremental
links. The incremental link option is valid for both executable and shared library links. The +ild
option is not valid for relocatable links, options (or tools) that strip the output module, and certain
optimization options.
The incremental linker support the +ildrelink option to allow you to instruct the incremental
linker to ignore the output load module and perform an initial incremental relink. In certain situations
(for example, when internal padding space is exhausted), the incremental linker is forced to perform
an initial incremental link. You can avoid such unexpected initial incremental links by periodically
rebuilding the output file with the +ildrelink option.
The ld command supports additional options with +ild. The +ildnowarn option suppresses
all incremental-linking related warning messages. The +ildpad percentage controls the amount
of padding (percentage) the incremental linker allocates. You can use these options with the -Wl,
arg1... compiler option.
See ld(1) for more information.
Archive Library Processing
The incremental linker searches an archive library if there are unsatisfied symbols. It extracts all
archive members satisfying unsats and processes them as new object files. If an archive library is
modified, the linker reverts to an initial incremental link.
An object file extracted from an archive library in the previous link remains in the output load
module even if all references to symbols defined in the object file have been removed. The linker
removes these object files when it performs the next initial incremental link.
Shared Library Processing
In an initial incremental link, the linker scans shared library symbol tables and resolves unsats the
same way it does in a regular link. In incremental links, the linker does not process shared libraries
and their symbol tables at all and does not report shared library unsats. The dynamic loader detects
them at run time. If any of the shared libraries on the command line was modified, the linker reverts
to an initial incremental link.
Performance
Performance of the incremental linker may suffer greatly if you change a high percentage of object
files.
The incremental linker may not link small programs much faster, and the relative increase in size
of the executable is greater than that for larger programs.
Incremental Linking 219