|
|
1.1 root 1: .TI F77/BIGLIBS "Sep. 15, 1984"
2: Techniques for Creating Large User Libraries
3:
4: If you have a large library, it saves space to strip the object files
5: of local symbols before putting them in the library.
6: The following
7: C shell commands strip all the '.o' files in the current directory
8: and create a new random library, mylib.a, from them.
9: Do this only with debugged files as the source level debuger,
10: dbx, can not be used with stripped object files.
11:
12: .nf
13: foreach i (*.o)
14: ld -r -x $i
15: /bin/mv a.out $i
16: end
17: /bin/rm -f mylib.a
18: ar qv mylib.a *.o
19: ranlib mylib.a
20: .fi
21:
22: The /bin/rm -f will remove an existing version of the library without
23: prompting if it exists and without error comment if none exists.
24: \&'Ar q' is faster than 'ar r' or 'ar u' when creating libraries, especially
25: when creating an archive piece-by-piece. 'q' cannot be used when
26: updating an archive. The 'v' option causes the names of the files
27: being added to be typed on standard output.
28:
29: With large archives, loading time often is improved if the files
30: in the archive are ordered so that the loader will make only one
31: pass through the archive. To do this, replace the ar by:
32:
33: .nf
34: ar qv mylib.a `lorder *.o | tsort`
35: .fi
36:
37: If you are creating a archive with over 500 object files, 'lorder *.o'
38: may cause the error: "Arguments too long".
39: This can be overcome by a sequence such as:
40:
41: .nf
42: ar q tmp.a [a-d]*.o
43: ar q tmp.a [e-n]*.o
44: ar q tmp.a [o-z]*.o
45: lorder tmp.a | tsort | split -100 - XXlists
46: /bin/rm tmp.a
47: foreach i ( XXlists* )
48: ar qv mylib.a `cat $i`
49: end
50: /bin/rm -f XXlists*
51: .fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.