aboutsummaryrefslogtreecommitdiffstats
path: root/chapter07/stripping.xml
blob: 7c054b6b28ac03ca432e37bfa61f76b55448a04c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-tools-stripping">
  <?dbhtml filename="stripping.html"?>

  <title>Stripping</title>

  <para>The steps in this section are optional, but if the LFS partition is
  rather small, it is beneficial to learn that unnecessary items can be removed.
  The executables and libraries built so far contain about 70 MB of unneeded
  debugging symbols. Remove those symbols with:</para>

<screen><userinput>$LFS_TGT-strip --strip-debug $LFS/usr/lib/*
$LFS_TGT-strip --strip-unneeded $LFS/usr/{,s}bin/*</userinput></screen>

  <para>These commands will skip a number of files, reporting that it does not
  recognize their file format. Most of these are scripts instead of binaries.
  Note that we use the <command>strip</command> program built in
  <quote>Binutils pass 1</quote>, since it is the one that knows how to strip
  our cross-compiled programs.</para>
<!-- Normally, the host "strip" could be used too, since it is actually the
same computer. But Some old versions of binutils may generate buggy crt1.o
and the like, because they do not know about recently introduced symbol
types. For more details,
see https://sourceware.org/bugzilla/show_bug.cgi?id=22875-->

  <para>Take care <emphasis>not</emphasis> to use
  <parameter>--strip-unneeded</parameter> on the libraries. The static
  ones would be destroyed and the toolchain packages would need to be
  built all over again.</para>

  <para>To save more, remove the documentation:</para>

<screen><userinput>rm -rf $LFS/usr/{,share}/{info,man,doc}</userinput></screen>

  <para>The libtool .la files are only useful when linking with static
  libraries. They are unneeded, and potentially harmful, when using dynamic
  shared libraries, specially when using also non-autotools build systems.
  Remove those files now:</para>

<screen><userinput>find $LFS/usr/{lib,libexec} -name \*.la -delete</userinput></screen>

  <para>At this point, you should have at least 3 GB of free space in
  <envar>$LFS</envar> that can be used to build and install Glibc and Gcc in
  the next phase. If you can build and install Glibc, you can build and install
  the rest too.</para>

</sect1>