lorder - Finds the best order for member files in an
The lorder command is essentially obsolete. Use the following
command in its place: % ar -ts file.a
The lorder command reads one or more object or library
archive files, looks for external references, and writes a
list of paired filenames to standard output. The first of
each pair of files contains references to identifiers that
are defined in the second file. You can send this list to
the tsort command to find an ordering of a library member
file suitable for 1-pass access by ld.
If object files do not end with lorder overlooks them and
attributes their global symbols and references to some
To create a subroutine library, enter: lorder charin.o
scanfld.o scan.o scanln.o | tsort | xargs ar qv libsubs.a
(Enter this command entirely on one line, not on two lines
as shown above.)
This creates a subroutine library named libsubs.a that
contains charin.o, scanfld.o, scan.o, and scanln.o. The
ordering of the object modules in the library is important.
The lorder and tsort commands together add the subroutines
to the library in the proper order.
Suppose that scan.o calls entry points in scanfld.o and
scanln.o. scanfld.o also calls entry points in charin.o.
First, the lorder command creates a list of pairs that
shows these dependencies: charin.o charin.o scanfld.o
scanfld.o scan.o scan.o scanln.o scanln.o scanfld.o
charin.o scanln.o charin.o scan.o scanfld.o
This list is piped to the tsort command, which converts
the list into the ordering that is needed:
scan.o scanfld.o scanln.o charin.o
Note that each module precedes the module it calls.
charin.o, which does not call another module, is last. The
second list is then piped to xargs, which constructs and
runs the following ar command: ar qv libsubs.a scan.o
scanfld.o scanln.o charin.o
This ar command creates the properly ordered library.
Commands: ar(1), as(1), cc(1), ld(1), make(1), nm(1),
size(1), strip(1), tsort(1), xargs(1)
Files: a.out(4), ar(4)
[ Back ]