source: chapter05/binutils-pass2.xml@ ee1a413

multilib-10.1
Last change on this file since ee1a413 was ee1a413, checked in by Thomas Trepl <thomas@…>, 5 years ago

Change profiling attribute to enable selection of m32 and/or mx32. Fixes #4452.

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

  • Property mode set to 100644
File size: 7.0 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-pass2" role="wrap">
9 <?dbhtml filename="binutils-pass2.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 2</title>
18
19 <indexterm zone="ch-tools-binutils-pass2">
20 <primary sortas="a-Binutils">Binutils</primary>
21 <secondary>tools, pass 2</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-ch5p2-sbu;</seg>
37 <seg>&binutils-ch5p2-du;</seg>
38 </seglistitem>
39 </segmentedlist>
40
41 </sect2>
42
43 <sect2 role="installation">
44 <title>Installation of Binutils</title>
45
46 <para>Create a separate build directory again:</para>
47
48<screen><userinput remap="pre">mkdir -v build
49cd build</userinput></screen>
50
51 <para>Prepare Binutils for compilation:</para>
52
53<screen arch="default"><userinput remap="configure">CC=$LFS_TGT-gcc \
54AR=$LFS_TGT-ar \
55RANLIB=$LFS_TGT-ranlib \
56../configure \
57 --prefix=/tools \
58 --disable-nls \
59 --disable-werror \
60 --with-lib-path=/tools/lib \
61 --with-sysroot</userinput></screen>
62
63<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">lpath=/tools/lib</userinput>
64<userinput remap="configure" arch="ml_32,ml_all">lpath="$lpath:/tools/lib32"</userinput>
65<userinput remap="configure" arch="ml_x32,ml_all">lpath="$lpath:/tools/libx32"</userinput>
66<userinput remap="configure">CC=$LFS_TGT-gcc \
67AR=$LFS_TGT-ar \
68RANLIB=$LFS_TGT-ranlib \
69../configure \
70 --prefix=/tools \
71 --disable-nls \
72 --disable-werror \
73 --with-lib-path=$lpath \
74 --with-sysroot \
75 --enable-64-bit-bfd \
76 --enable-multilib</userinput></screen>
77
78 <variablelist>
79 <title>The meaning of the new configure options:</title>
80
81 <varlistentry>
82 <term><parameter>CC=$LFS_TGT-gcc AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib</parameter></term>
83 <listitem>
84 <para>Because this is really a native build of Binutils, setting these
85 variables ensures that the build system uses the cross-compiler and
86 associated tools instead of the ones on the host system.</para>
87 </listitem>
88 </varlistentry>
89
90 <varlistentry arch="default">
91 <term><parameter>--with-lib-path=/tools/lib</parameter></term>
92 <listitem>
93 <para>This tells the configure script to specify the library
94 search path during the compilation of Binutils, resulting in
95 <filename class="directory">/tools/lib</filename> being passed
96 to the linker. This prevents the linker from searching through
97 library directories on the host.</para>
98 </listitem>
99 </varlistentry>
100
101 <varlistentry arch="ml_32,ml_x32,ml_all">
102 <term><parameter>--with-lib-path=/tools/lib:...</parameter></term>
103 <listitem>
104 <para>This tells the configure script to specify the library
105 search path during the compilation of Binutils, resulting in
106 <filename class="directory">/tools/lib</filename>,
107 <filename class="directory">/tools/lib32</filename> and
108 <filename class="directory">/tools/libx32</filename> being passed
109 to the linker. This prevents the linker from searching through
110 library directories on the host.</para>
111 </listitem>
112 </varlistentry>
113
114 <varlistentry>
115 <term><parameter>--with-sysroot</parameter></term>
116 <listitem>
117 <para>The sysroot feature enables the linker to find shared objects
118 which are required by other shared objects explicitly included on the
119 linker's command line. Without this, some packages may not build
120 successfully on some hosts.</para>
121 </listitem>
122 </varlistentry>
123
124 <varlistentry arch="ml_32,ml_x32,ml_all">
125 <term><parameter>--enable-64-bit-bfd</parameter></term>
126 <listitem>
127 <para>TODO</para>
128 </listitem>
129 </varlistentry>
130
131 <varlistentry arch="ml_32,ml_x32,ml_all">
132 <term><parameter>--enable-multilib</parameter></term>
133 <listitem>
134 <para>TODO</para>
135 </listitem>
136 </varlistentry>
137
138 </variablelist>
139
140 <para>Compile the package:</para>
141
142<screen><userinput remap="make">make</userinput></screen>
143
144 <para>Install the package:</para>
145
146<screen><userinput remap="install">make install</userinput></screen>
147
148 <para>Now prepare the linker for the <quote>Re-adjusting</quote> phase in
149 the next chapter:</para>
150
151<screen arch="default"><userinput remap="adjust">make -C ld clean
152make -C ld LIB_PATH=/usr/lib:/lib
153cp -v ld/ld-new /tools/bin</userinput></screen>
154
155<screen arch="ml_all"><userinput remap="adjust">make -C ld clean
156make -C ld LIB_PATH=/usr/lib:/lib:/usr/lib32:/lib32:/usr/libx32:/libx32
157cp -v ld/ld-new /tools/bin</userinput></screen>
158<screen arch="ml_32"><userinput remap="adjust">make -C ld clean
159make -C ld LIB_PATH=/usr/lib:/lib:/usr/lib32:/lib32
160cp -v ld/ld-new /tools/bin</userinput></screen>
161<screen arch="ml_x32"><userinput remap="adjust">make -C ld clean
162make -C ld LIB_PATH=/usr/lib:/lib:/usr/libx32:/libx32
163cp -v ld/ld-new /tools/bin</userinput></screen>
164
165 <variablelist>
166 <title>The meaning of the make parameters:</title>
167
168 <varlistentry>
169 <term><parameter>-C ld clean</parameter></term>
170 <listitem>
171 <para>This tells the make program to remove all compiled
172 files in the <filename class="directory">ld</filename>
173 subdirectory.</para>
174 </listitem>
175 </varlistentry>
176
177 <varlistentry>
178 <term><parameter>-C ld LIB_PATH=/usr/lib:/lib</parameter></term>
179 <listitem>
180 <para>This option rebuilds everything in the <filename
181 class="directory">ld</filename> subdirectory. Specifying the
182 <envar>LIB_PATH</envar> Makefile variable on the command line
183 allows us to override the default value of the temporary tools
184 and point it to the proper final path. The value of this variable
185 specifies the linker's default library search path. This
186 preparation is used in the next chapter.</para>
187 </listitem>
188 </varlistentry>
189
190 </variablelist>
191
192 </sect2>
193
194 <sect2 role="content">
195 <title/>
196
197 <para>Details on this package are located in
198 <xref linkend="contents-binutils" role="."/></para>
199
200 </sect2>
201
202</sect1>
Note: See TracBrowser for help on using the repository browser.