aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/binutils-pass2.xml
blob: 4521336f8deb21e3e63007305808ecb8b35f15a9 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?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-binutils-pass2" role="wrap">
  <?dbhtml filename="binutils-pass2.html"?>

  <sect1info condition="script">
    <productname>binutils-pass2</productname>
    <productnumber>&binutils-version;</productnumber>
    <address>&binutils-url;</address>
  </sect1info>

  <title>Binutils-&binutils-version; - Pass 2</title>

  <indexterm zone="ch-tools-binutils-pass2">
    <primary sortas="a-Binutils">Binutils</primary>
    <secondary>tools, pass 2</secondary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
    href="../chapter08/binutils.xml"
    xpointer="xpointer(/sect1/sect2[1]/para[1])"/>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&binutils-tmpp2-sbu;</seg>
        <seg>&binutils-tmpp2-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Binutils</title>

    <!-- Don't remove this until Binutils upstream updates the libtool
         copy.  On some host distros the issue doesn't show up.  -->
    <para>Binutils ships an outdated copy of libtool in the tarball.  It lacks
    sysroot support, so the produced binaries will be mistakenly linked to
    libraries from the host distro.  Work around this issue:</para>

<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>

    <para>Create a separate build directory again:</para>

<screen><userinput remap="pre">mkdir -v build
cd       build</userinput></screen>

    <para>Prepare Binutils for compilation:</para>

<screen arch="default"><userinput remap="configure">../configure                   \
    --prefix=/usr              \
    --build=$(../config.guess) \
    --host=$LFS_TGT            \
    --disable-nls              \
    --enable-shared            \
    --enable-gprofng=no        \
    --disable-werror           \
    --enable-64-bit-bfd</userinput></screen>
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                   \
    --prefix=/usr              \
    --build=$(../config.guess) \
    --host=$LFS_TGT            \
    --disable-nls              \
    --enable-shared            \
    --enable-gprofng=no        \
    --disable-werror           \
    --enable-64-bit-bfd        \
    --enable-multilib</userinput></screen>

    <variablelist>
      <title>The meaning of the new configure options:</title>

      <varlistentry>
        <term><parameter>--enable-shared</parameter></term>
        <listitem>
          <para>Builds <filename
          class="libraryfile">libbfd</filename> as a shared library.</para>
        </listitem>
      </varlistentry>


      <varlistentry>
        <term><parameter>--enable-64-bit-bfd</parameter></term>
        <listitem>
          <para>Enables 64-bit support (on hosts with smaller word sizes).
          This may not be needed on 64-bit systems, but it does no harm.</para>
        </listitem>
      </varlistentry>

      <varlistentry arch="ml_32,ml_x32,ml_all">
        <term><parameter>--enable-multilib</parameter></term>
        <listitem>
          <para>Enables multilib support in bintutils.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Compile the package:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>Install the package:</para>

<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>

    <para>Remove the libtool archive files because they are harmful for
    cross compilation, and remove unnecessary static libraries:</para>

<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}</userinput></screen>

  </sect2>

  <sect2 role="content">
    <title/>

    <para>Details on this package are located in
    <xref linkend="contents-binutils" role="."/></para>

  </sect2>

</sect1>