source: chapter05/binutils-pass1.xml@ 8eb3fe4

multilib-10.1 multilib-before-cross
Last change on this file since 8eb3fe4 was 8eb3fe4, checked in by Thomas Trepl <thomas@…>, 3 years ago

First apply of multilib-patch of April 1st, 2019

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/multilib@11566 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 6.4 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-binutils-pass1" role="wrap">
9 <?dbhtml filename="binutils-pass1.html"?>
10
11 <sect1info condition="script">
12 <productname>binutils</productname>
13 <productnumber>&binutils-version;</productnumber>
14 <address>&binutils-url;</address>
15 </sect1info>
16
17 <title>Binutils-&binutils-version; - Pass 1</title>
18
19 <indexterm zone="ch-tools-binutils-pass1">
20 <primary sortas="a-Binutils">Binutils</primary>
21 <secondary>tools, pass 1</secondary>
22 </indexterm>
23
24 <sect2 role="package">
25 <title/>
26
27 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
28 href="../chapter06/binutils.xml"
29 xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
30
31 <segmentedlist>
32 <segtitle>&buildtime;</segtitle>
33 <segtitle>&diskspace;</segtitle>
34
35 <seglistitem>
36 <seg>&binutils-ch5p1-sbu;</seg>
37 <seg>&binutils-ch5p1-du;</seg>
38 </seglistitem>
39 </segmentedlist>
40
41 </sect2>
42
43 <sect2 role="installation">
44 <title>Installation of Cross Binutils</title>
45
46 <note><para>Go back and re-read the notes in the previous section.
47 Understanding the notes labeled important will save you a lot
48 of problems later.</para></note>
49
50 <para>It is important that Binutils be the first package compiled
51 because both Glibc and GCC perform various tests on the available
52 linker and assembler to determine which of their own features to
53 enable.</para>
54
55 <para>The Binutils documentation recommends building Binutils
56 in a dedicated build directory:</para>
57
58<screen><userinput remap="pre">mkdir -v build
59cd build</userinput></screen>
60
61 <note>
62 <para>In order for the SBU values listed in the rest of the book
63 to be of any use, measure the time it takes to build this package from
64 the configuration, up to and including the first install. To achieve
65 this easily, wrap the commands in a <command>time</command>
66 command like this: <userinput>time { ./configure ... &amp;&amp; ...
67 &amp;&amp; make install; }</userinput>.</para>
68 </note>
69
70 <note><para>The approximate build SBU values and required disk space
71 in Chapter&nbsp;5 does not include test suite data.</para></note>
72
73 <para>Now prepare Binutils for compilation:</para>
74
75<screen arch="default"><userinput remap="configure">../configure --prefix=/tools \
76 --with-sysroot=$LFS \
77 --with-lib-path=/tools/lib \
78 --target=$LFS_TGT \
79 --disable-nls \
80 --disable-werror</userinput></screen>
81
82 <screen arch="multilib"><userinput remap="configure">../configure --prefix=/tools \
83 --with-sysroot=$LFS \
84 --with-lib-path=/tools/lib:/tools/lib32:/tools/libx32 \
85 --target=$LFS_TGT \
86 --disable-nls \
87 --disable-werror \
88 --enable-64-bit-bfd \
89 --enable-multilib</userinput></screen>
90
91 <variablelist>
92 <title>The meaning of the configure options:</title>
93
94 <varlistentry>
95 <term><parameter>--prefix=/tools</parameter></term>
96 <listitem>
97 <para>This tells the configure script to prepare to install the
98 Binutils programs in the <filename class="directory">/tools</filename>
99 directory.</para>
100 </listitem>
101 </varlistentry>
102
103 <varlistentry>
104 <term><parameter>--with-sysroot=$LFS</parameter></term>
105 <listitem>
106 <para>For cross compilation, this tells the build system to look in
107 $LFS for the target system libraries as needed.</para>
108 </listitem>
109 </varlistentry>
110
111 <varlistentry>
112 <term><parameter>--with-lib-path=/tools/lib</parameter></term>
113 <listitem>
114 <para>This specifies which library path the linker should be
115 configured to use.</para>
116 </listitem>
117 </varlistentry>
118
119 <varlistentry>
120 <term><envar>--target=$LFS_TGT</envar></term>
121 <listitem>
122 <para>Because the machine description in the <envar>LFS_TGT</envar>
123 variable is slightly different than the value returned by the
124 <command>config.guess</command> script, this switch will tell the
125 <command>configure</command> script to adjust Binutil's build system
126 for building a cross linker. </para>
127 </listitem>
128 </varlistentry>
129
130 <varlistentry>
131 <term><parameter>--disable-nls</parameter></term>
132 <listitem>
133 <para>This disables internationalization as i18n is not needed for the
134 temporary tools.</para>
135 </listitem>
136 </varlistentry>
137
138 <varlistentry>
139 <term><parameter>--disable-werror</parameter></term>
140 <listitem>
141 <para>This prevents the build from stopping in the event that there
142 are warnings from the host's compiler.</para>
143 </listitem>
144 </varlistentry>
145
146 </variablelist>
147
148 <para>Continue with compiling the package:</para>
149
150<screen><userinput remap="make">make</userinput></screen>
151
152 <para>Compilation is now complete. Ordinarily we would now run the
153 test suite, but at this early stage the test suite framework (Tcl,
154 Expect, and DejaGNU) is not yet in place. The benefits of running the
155 tests at this point are minimal since the programs from this
156 first pass will soon be replaced by those from the second.</para>
157
158 <para arch="default">If building on x86_64, create a symlink to ensure the
159 sanity of the toolchain:</para>
160
161 <para arch="multilib">Create a symlink to ensure the sanity of
162 the toolchain:</para>
163
164<screen arch="default"><userinput remap="install">case $(uname -m) in
165 x86_64) mkdir -v /tools/lib &amp;&amp; ln -sv lib /tools/lib64 ;;
166esac</userinput></screen>
167
168<screen arch="multilib"><userinput remap="install">mkdir -v /tools/lib &amp;&amp;
169ln -sv lib /tools/lib64</userinput></screen>
170
171 <para>Install the package:</para>
172
173<screen><userinput remap="install">make install</userinput></screen>
174
175 </sect2>
176
177 <sect2 role="content">
178 <title/>
179
180 <para>Details on this package are located in
181 <xref linkend="contents-binutils" role="."/></para>
182
183 </sect2>
184
185</sect1>
Note: See TracBrowser for help on using the repository browser.