source: chapter05/binutils-pass1.xml@ e623c90

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 12.2 12.2-rc1 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since e623c90 was 4e82d47, checked in by Jeremy Huntwork <jhuntwork@…>, 16 years ago

Bring in DIY's next generation build method. Move GRUB to chapter 8.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@8755 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 4.9 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/2003/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 <para>It is important that Binutils be the first package compiled
47 because both Glibc and GCC perform various tests on the available
48 linker and assembler to determine which of their own features to
49 enable.</para>
50
51 <para>Binutils does not recognize versions of Texinfo newer than 4.9. Fix
52 this issue by applying the following patch:</para>
53
54<screen><userinput remap="pre">patch -Np1 -i ../&binutils-configure-patch;</userinput></screen>
55
56 <para>The Binutils documentation recommends building Binutils outside of the
57 source directory in a dedicated build directory:</para>
58
59<screen><userinput remap="pre">mkdir -v ../binutils-build
60cd ../binutils-build</userinput></screen>
61
62 <note>
63 <para>In order for the SBU values listed in the rest of the book
64 to be of any use, measure the time it takes to build this package from
65 the configuration, up to and including the first install. To achieve
66 this easily, wrap the three commands in a <command>time</command>
67 command like this: <userinput>time { ./configure ... &amp;&amp; make
68 &amp;&amp; make install; }</userinput>.</para>
69 </note>
70
71 <para>Now prepare Binutils for compilation:</para>
72
73<screen><userinput remap="configure">../binutils-&binutils-version;/configure \
74 --target=$LFS_TGT --prefix=/tools \
75 --disable-nls --disable-werror</userinput></screen>
76
77 <variablelist>
78 <title>The meaning of the configure options:</title>
79
80 <varlistentry>
81 <term><envar>--target=$LFS_TGT</envar></term>
82 <listitem>
83 <para>Because the machine description in the <envar>LFS_TGT</envar>
84 variable is slightly different than the value returned by the
85 config.guess script, this switch will tell the configure script to
86 adjust Binutil's build system for building a cross linker.
87 </para>
88 </listitem>
89 </varlistentry>
90
91 <varlistentry>
92 <term><parameter>--prefix=/tools</parameter></term>
93 <listitem>
94 <para>This tells the configure script to prepare to install the
95 Binutils programs in the <filename class="directory">/tools</filename>
96 directory.</para>
97 </listitem>
98 </varlistentry>
99
100 <varlistentry>
101 <term><parameter>--disable-nls</parameter></term>
102 <listitem>
103 <para>This disables internationalization as i18n is not needed for the
104 temporary tools.</para>
105 </listitem>
106 </varlistentry>
107
108 <varlistentry>
109 <term><parameter>--disable-werror</parameter></term>
110 <listitem>
111 <para>This prevents the build from stopping in the event that there
112 are warnings from the host's compiler.</para>
113 </listitem>
114 </varlistentry>
115
116 </variablelist>
117
118 <para>Continue with compiling the package:</para>
119
120<screen><userinput remap="make">make</userinput></screen>
121
122 <para>Compilation is now complete. Ordinarily we would now run the
123 test suite, but at this early stage the test suite framework (Tcl,
124 Expect, and DejaGNU) is not yet in place. The benefits of running the
125 tests at this point are minimal since the programs from this
126 first pass will soon be replaced by those from the second.</para>
127
128 <para>If building on x86_64, create a symlink to ensure the sanity of
129 the toolchain:</para>
130
131<screen><userinput remap="install">case $(uname -m) in
132 x86_64) mkdir -v /tools/lib &amp;&amp; ln -sv lib /tools/lib64 ;;
133esac</userinput></screen>
134
135 <para>Install the package:</para>
136
137<screen><userinput remap="install">make install</userinput></screen>
138
139 </sect2>
140
141 <sect2 role="content">
142 <title/>
143
144 <para>Details on this package are located in
145 <xref linkend="contents-binutils" role="."/></para>
146
147 </sect2>
148
149</sect1>
Note: See TracBrowser for help on using the repository browser.