1 | <sect1 id="ch06-aboutdebug">
|
---|
2 | <title>About debugging symbols</title>
|
---|
3 |
|
---|
4 | <para>
|
---|
5 | Most programs and libraries by default are compiled with debugging
|
---|
6 | symbols and optimizing level 2 (gcc options -g and -O2) and are compiled
|
---|
7 | for a specific CPU. On Intel platforms software is compiled for i386
|
---|
8 | processors by default. If you don't wish to run software on other
|
---|
9 | machines other than your own, you might want to change the default
|
---|
10 | compiler options so that they will be compiled with a higher
|
---|
11 | optimization level, no debugging symbols and generate code for your
|
---|
12 | specific architecture. Let me first explain what debugging symbols
|
---|
13 | are.
|
---|
14 | </para>
|
---|
15 |
|
---|
16 | <para>
|
---|
17 | A program compiled with debugging symbols means you can run a program or
|
---|
18 | library through a debugger and the debugger's output will be user friendlier.
|
---|
19 | These debugging symbols also enlarge the program or library significantly.
|
---|
20 | </para>
|
---|
21 |
|
---|
22 | <para>
|
---|
23 | To remove debugging symbols from a binary (must be an a.out or ELF binary)
|
---|
24 | run <userinput>strip --strip-debug filename</userinput> You can use wild cards
|
---|
25 | if you need to strip debugging symbols from multiple files (use something like
|
---|
26 | strip --strip-debug $LFS/usr/bin/*). Another, easier, options is just
|
---|
27 | not to compile programs with debugging symbols. Most people will probably
|
---|
28 | never use a debugger on software, so by leaving those symbols out you
|
---|
29 | can save a lot of diskspace.
|
---|
30 | </para>
|
---|
31 |
|
---|
32 | <para>
|
---|
33 | Before you wonder if these debugging symbols would make a big difference,
|
---|
34 | here are some statistics:
|
---|
35 | </para>
|
---|
36 |
|
---|
37 | <itemizedlist>
|
---|
38 |
|
---|
39 | <listitem><para>
|
---|
40 | A dynamic Bash binary with debugging symbols: 1.2MB
|
---|
41 | </para></listitem>
|
---|
42 |
|
---|
43 | <listitem><para>
|
---|
44 | A dynamic Bash binary without debugging symbols: 478KB
|
---|
45 | </para></listitem>
|
---|
46 |
|
---|
47 | <listitem><para>
|
---|
48 | /lib and /usr/lib (glibc and gcc files) with debugging
|
---|
49 | symbols: 87MB
|
---|
50 | </para></listitem>
|
---|
51 |
|
---|
52 | <listitem><para>
|
---|
53 | /lib and /usr/lib (glibc and gcc files) without
|
---|
54 | debugging symbols: 16MB
|
---|
55 | </para></listitem>
|
---|
56 |
|
---|
57 | </itemizedlist>
|
---|
58 |
|
---|
59 | <para>
|
---|
60 | Sizes may vary depending on which compiler was used and which C library
|
---|
61 | version was used to link dynamic programs against, but your results will be
|
---|
62 | similar if you compare programs with and without debugging symbols. After
|
---|
63 | I was done with this chapter and stripped all debugging symbols from all LFS
|
---|
64 | binaries and libraries I regained a little over 102 MB of disk space. Quite
|
---|
65 | the difference.
|
---|
66 | </para>
|
---|
67 |
|
---|
68 | </sect1>
|
---|
69 |
|
---|