source: chapter07/stripping.xml@ 08f72423

11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 arm ml-11.0 multilib trunk xry111/clfs-ng xry111/glibc-2.34 xry111/lfs-next
Last change on this file since 08f72423 was 08f72423, checked in by Xi Ruoyao <xry111@…>, 11 months ago

always use --strip-unneeded for stripping

The behavior of --strip-unneeded and --strip-all are same for
executables and shared libraries. For static libraries,
--strip-unneeded keeps the symbols needed for relocation processing so
it won't break static archives.

  • Property mode set to 100644
File size: 7.2 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-tools-stripping">
9 <?dbhtml filename="stripping.html"?>
10
11 <title>Cleaning up and Saving the Temporary System</title>
12
13 <para>The libtool .la files are only useful when linking with static
14 libraries. They are unneeded, and potentially harmful, when using dynamic
15 shared libraries, specially when using non-autotools build systems.
16 While still in chroot, remove those files now:</para>
17
18<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
19
20 <para>Remove the documentation of the temporary tools, to prevent them
21 from ending up in the final system, and save about 35 MB:</para>
22
23<screen><userinput>rm -rf /usr/share/{info,man,doc}/*</userinput></screen>
24
25 <note><para>
26 All the remaining steps in this section are optional. Nevertheless,
27 as soon as you begin installing packages in <xref
28 linkend="chapter-building-system"/>, the temporary tools will be
29 overwritten. So it may be a good idea to do a backup of the temporary
30 tools as described below. The other steps are only needed if you are
31 really short on disk space.
32 </para></note>
33
34 <para>
35 The following steps are performed from outside the chroot
36 environment. That means, you have to leave the chroot environment
37 first before continuing. The reason for that is to:
38 <itemizedlist>
39 <listitem>
40 <para>
41 make sure that objects are not in use while they are
42 manipulated.
43 </para>
44 </listitem>
45 <listitem>
46 <para>
47 get access to file system locations outside of the chroot
48 environment to store/read the backup archive which should
49 not be placed within the
50 <filename class="directory">$LFS</filename> hierarchy for
51 safety reasons.
52 </para>
53 </listitem>
54 </itemizedlist>
55 </para>
56
57 <para>
58 Leave the chroot environment and unmount the kernel virtual file
59 systems:
60 </para>
61
62 <note>
63 <para>All of the following instructions are executed by
64 <systemitem class="username">root</systemitem>. Take extra
65 care about the commands you're going to run as mistakes
66 here can modify your host system. Be aware that the
67 environment variable <envar>LFS</envar> is set for user
68 <systemitem class="username">lfs</systemitem> by default
69 but it might <emphasis>not</emphasis> be set for
70 <systemitem class="username">root</systemitem>. Whenever
71 commands are to be executed by <systemitem class="username">root</systemitem>,
72 make sure you have set <envar>LFS</envar> accordingly.
73 This has been discussed in <xref linkend='ch-partitioning-aboutlfs'/>.
74 </para>
75 </note>
76
77<screen role="nodump"><userinput>exit
78umount $LFS/dev{/pts,}
79umount $LFS/{sys,proc,run}</userinput></screen>
80
81 <sect2>
82 <title>Stripping</title>
83
84 <para>If the LFS partition is rather small, it is good to
85 know that unnecessary items can be removed. The executables and
86 libraries built so far contain a little over 90 MB of unneeded debugging
87 symbols.</para>
88
89 <para>Strip off debugging symbols from binaries:</para>
90<screen role="nodump"><userinput>strip --strip-unneeded $LFS/usr/lib/*
91strip --strip-unneeded $LFS/usr/{,s}bin/*
92strip --strip-unneeded $LFS/tools/bin/*</userinput></screen>
93
94 <para>These commands will skip a number of files reporting that it does not
95 recognize their file format. Most of these are scripts instead of binaries.
96 <!--Note that we use the <command>strip</command> program built in
97 <quote>Binutils pass 2</quote>, since it is the one that knows how to strip
98 our cross-compiled programs.--></para>
99
100 <para>At this point, you should have at least 5 GB of free space on the
101 chroot partition that can be used to build and install Glibc and GCC in
102 the next phase. If you can build and install Glibc, you can build and install
103 the rest too. You can check the free disk space with the command
104 <command>df -h $LFS</command>.</para>
105
106 </sect2>
107
108 <sect2>
109 <title>Backup</title>
110
111 <para>
112 Now that the essential tools have been created, its time to think about
113 a backup. When every check has passed successfully in the previously
114 built packages, your temporary tools are in a good state and might be
115 backed up for later reuse. In case of fatal failures in the subsequent
116 chapters, it often turns out that removing everything and starting over
117 (more carefully) is the best option to recover. Unfortunately, all the
118 temporary tools will be removed, too. To avoid spending extra time to
119 redo something which has been built successfully, prepare a backup.
120 </para>
121
122 <para>
123 Make sure you have at least 600 MB free disk space (the source tarballs
124 will be included in the backup archive) in the home directory of user
125 <systemitem class="username">root</systemitem>.
126 </para>
127
128 <para>
129 Create the backup archive by running the following command:
130 </para>
131
132<screen role="nodump" revision="sysv"><userinput>cd $LFS &amp;&amp;
133tar -cJpf $HOME/lfs-temp-tools-&version;.tar.xz .</userinput></screen>
134
135<screen role="nodump" revision="systemd"><userinput>cd $LFS &amp;&amp;
136tar -cJpf $HOME/lfs-temp-tools-&versiond;.tar.xz .</userinput></screen>
137
138 <para>
139 Replace <envar>$HOME</envar> by a directory of your choice if you
140 do not want to have the backup stored in <systemitem
141 class="username">root</systemitem>'s home directory.
142 </para>
143 </sect2>
144
145 <sect2>
146 <title>Restore</title>
147
148 <para>
149 In case some mistakes have been made and you need to start over, you can
150 use this backup to restore the temporary tools and save some recovery time.
151 Since the sources are located under
152 <filename class="directory">$LFS</filename>, they are included in the
153 backup archive as well, so they do not need to be downloaded again. After
154 checking that <envar>$LFS</envar> is set properly,
155 restore the backup by executing the following commands:
156 </para>
157
158<!-- Make the following look different so users don't blindly run the
159 restore when they don't need to. -->
160
161<screen role="nodump" revision="sysv"><computeroutput>cd $LFS &amp;&amp;
162rm -rf ./* &amp;&amp;
163tar -xpf $HOME/lfs-temp-tools-&version;.tar.xz</computeroutput></screen>
164
165<screen role="nodump" revision="systemd"><computeroutput>cd $LFS &amp;&amp;
166rm -rf ./* &amp;&amp;
167tar -xpf $HOME/lfs-temp-tools-&versiond;.tar.xz</computeroutput></screen>
168
169 <para>
170 Again, double check that the environment has been setup properly
171 and continue building the rest of the system.
172 </para>
173
174 <important>
175 <para>
176 If you left the chroot environment either to strip off debug
177 symbols, create a backup, or restart building using a restore,
178 remember to mount the kernel virtual filesystems now again as
179 described in <xref linkend='ch-tools-kernfs'/> and re-enter
180 the chroot environment (see <xref linkend='ch-tools-chroot'/>)
181 again before continuing.
182 </para>
183 </important>
184
185 </sect2>
186
187</sect1>
Note: See TracBrowser for help on using the repository browser.