Kenwood HP 9000 Personal Computer User Manual


 
Chapter 5 147
Creating and Using Libraries
Creating Shared Libraries
b.o A huge module, but contains only error routines that
are seldom called.
c.o Contains routines that are called frequently by a.o,
and calls routines in a.o frequently.
If you create a shared library using the following command line, the
modules will be inserted into the library in alphabetical order:
$ ld -b -o libabc.sl *.o
The potential problem with this ordering is that the routines in a.o and
c.o are spaced far apart in the library. Better virtual memory
performance could be attained by positioning the modules a.o and c.o
together in the shared library, followed by the module b.o. The following
command will do this:
$ ld -b -o libabc.sl a.o c.o b.o
One way to help determine the best order to specify the object files is to
gather profile data for the object modules; modules that are frequently
called should be grouped together on the command line.
Another way is to use the lorder(1) and tsort(1) commands. Used together
on a set of object modules, these commands determine how to order the
modules so that the linker only needs a single pass to resolve references
among the modules. A side-effect of this is that modules that call each
other may be positioned closer together than modules that don't. For
instance, suppose you have defined the following object modules:
Module Calls Routines in Module
a.o x.o y.o
b.o x.o y.o
d.o none
e.o none
x.o d.o
y.o d.o
Then the following command determines the one-pass link order:
$ lorder ?.o | tsort Pipe lorder's output to tsort.
a.o
b.o
e.o
x.o