source: chapter05/glibc.xml@ 84988c0

6.0
Last change on this file since 84988c0 was d878ce3, checked in by Matthew Burgess <matthew@…>, 20 years ago
  • Moved discussion of glibc test failures to chapter 6, and reworded notes aboutoptional tests.

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

  • Property mode set to 100644
File size: 8.2 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
3 <!ENTITY % general-entities SYSTEM "../general.ent">
4 %general-entities;
5]>
6<sect1 id="ch-tools-glibc" role="wrap">
7<title>Glibc-&glibc-version;</title>
8<?dbhtml filename="glibc.html"?>
9
10<indexterm zone="ch-tools-glibc">
11<primary sortas="a-Glibc">Glibc</primary>
12<secondary>tools</secondary></indexterm>
13
14<sect2 role="package"><title/>
15<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/glibc.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
16
17<segmentedlist>
18<segtitle>&buildtime;</segtitle>
19<segtitle>&diskspace;</segtitle>
20<seglistitem><seg>11.8 SBU</seg><seg>800 MB</seg></seglistitem>
21</segmentedlist>
22
23<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/glibc.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
24
25</sect2>
26
27<sect2 role="installation">
28<title>Installation of Glibc</title>
29
30<para>This package is known to behave badly when you change its default
31optimization flags (including the <parameter>-march</parameter> and
32<parameter>-mcpu</parameter> options). Therefore, if you have defined any
33environment variables that override default optimizations, such as CFLAGS and
34CXXFLAGS, we recommend un-setting them when building Glibc.</para>
35
36<para>Basically, compiling Glibc in any other way than the book suggests
37is putting the stability of your system at risk.</para>
38
39<para>The Glibc documentation recommends building Glibc outside of the source
40directory in a dedicated build directory:</para>
41
42<screen><userinput>mkdir ../glibc-build
43cd ../glibc-build</userinput></screen>
44
45<para>Next, prepare Glibc for compilation:</para>
46
47<screen><userinput>../glibc-&glibc-version;/configure --prefix=/tools \
48 --disable-profile --enable-add-ons=nptl --with-tls \
49 --with-binutils=/tools/bin --without-gd --without-cvs \
50 --with-headers=/tools/glibc-kernheaders</userinput></screen>
51
52<para>The meaning of the configure options:</para>
53
54<variablelist>
55<varlistentry>
56<term><parameter>--disable-profile</parameter></term>
57<listitem><para>This builds the
58libraries without profiling information. Omit this option if you plan to do
59profiling on the temporary tools.</para></listitem>
60</varlistentry>
61
62<varlistentry>
63<term><parameter>--enable-add-ons=nptl</parameter></term>
64<listitem><para>This tells Glibc to use the NPTL add-on as its threading
65library.</para></listitem>
66</varlistentry>
67
68<varlistentry>
69<term><parameter>--with-tls</parameter></term>
70<listitem><para>This tells Glibc to include support for TLS (thread-local storage).
71This is required for NPTL to work. </para></listitem>
72</varlistentry>
73
74<varlistentry>
75<term><parameter>--with-binutils=/tools/bin</parameter></term>
76<listitem><para>Strictly speaking this switch is not required. But it does ensure
77nothing can go wrong with regard to what Binutils programs get used during the
78Glibc build.</para></listitem>
79</varlistentry>
80
81<varlistentry>
82<term><parameter>--without-gd</parameter></term>
83<listitem><para>This prevents the build of the <command>memusagestat</command>
84program, which strangely enough insists on linking against the host's libraries
85(libgd, libpng, libz, and so forth). </para></listitem>
86</varlistentry>
87
88<varlistentry>
89<term><parameter>--without-cvs</parameter></term>
90<listitem><para>This is meant to prevent
91the Makefiles from attempting automatic CVS checkouts when using a CVS
92snapshot. But it's not actually needed these days. We use it because it
93suppresses an annoying but harmless warning about a missing
94<command>autoconf</command> program.</para></listitem>
95</varlistentry>
96
97<varlistentry>
98<term><parameter>--with-headers=/tools/glibc-kernheaders</parameter></term>
99<listitem><para>This tells Glibc to compile against the <quote>raw</quote>
100kernel headers, so that it knows exactly what features the kernel has, and can
101optimize itself accordingly. Not strictly necessary, but nice to have.</para></listitem>
102</varlistentry>
103</variablelist>
104
105<para>During this stage you might see the following warning:</para>
106
107<blockquote><screen><computeroutput>configure: WARNING:
108*** These auxiliary programs are missing or incompatible versions: msgfmt
109*** some features will be disabled.
110*** Check the INSTALL file for required versions.</computeroutput></screen></blockquote>
111
112<para>The missing or incompatible <command>msgfmt</command> program is
113generally harmless, but it's believed it can sometimes cause problems when
114running the test suite.</para>
115
116<para>Compile the package:</para>
117
118<screen><userinput>make</userinput></screen>
119
120<para>Compilation is now complete. As mentioned earlier, running the test suites
121for the temporary tools installed in this chapter is not mandatory. If you want
122to run the Glibc test suite though, the following command will do so:</para>
123
124<screen><userinput>make check</userinput></screen>
125
126<para>For a discussion of test failures that are of particular
127importance, please see <xref linkend="ch-system-glibc"/>.</para>
128
129<para>In this chapter, some tests can be adversely affected by existing tools or
130environmental issues on the host system. In short, don't worry too much if you
131see Glibc test suite failures in this chapter. The Glibc in
132<xref linkend="chapter-building-system"/> is the one we'll ultimately end up
133using, so that is the one we would really like to see pass the tests (but even
134there some failures could still occur -- the <emphasis>math</emphasis> tests,
135for example).</para>
136
137<para>When experiencing a failure, make a note of it, then continue by reissuing
138the <command>make check</command>. The test suite should pick up where it left
139off and continue. You can circumvent this stop-start sequence by issuing a
140<command>make -k check</command>. If you do that though, be sure to log the
141output so that you can later peruse the log file and examine the total number of
142failures.</para>
143
144<para>Though it is a harmless message, the install stage of Glibc will at the
145end complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
146Prevent this confusing little warning with:</para>
147
148<screen><userinput>mkdir /tools/etc
149touch /tools/etc/ld.so.conf</userinput></screen>
150
151<para>Now install the package:</para>
152
153<screen><userinput>make install</userinput></screen>
154
155<para>Different countries and cultures have varying conventions for how to
156communicate. These conventions range from very simple ones, such as the format
157for representing dates and times, to very complex ones, such as the language
158spoken. The <quote>internationalization</quote> of GNU programs works by means
159of <emphasis>locales</emphasis>.</para>
160
161<note><para>If you are not running the test suites here in this chapter as per
162our recommendation, there is little point in installing the locales now. We'll
163be installing the locales in the next chapter.</para></note>
164
165<para>If you still want to install the Glibc locales anyway, the following
166command will do so:</para>
167
168<screen><userinput>make localedata/install-locales</userinput></screen>
169
170<para>An alternative to running the previous command is to install only those
171locales which you need or want. This can be achieved by using the
172<command>localedef</command> command. Information on this can be found in
173the <filename>INSTALL</filename> file in the Glibc source. However, there are
174a number of locales that are essential for the tests of future packages to
175pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
176following instructions, instead of the install-locales target above, will
177install the minimum set of locales necessary for the tests to run
178successfully:</para>
179
180<screen><userinput>mkdir -p /tools/lib/locale
181localedef -i de_DE -f ISO-8859-1 de_DE
182localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
183localedef -i en_HK -f ISO-8859-1 en_HK
184localedef -i en_PH -f ISO-8859-1 en_PH
185localedef -i en_US -f ISO-8859-1 en_US
186localedef -i es_MX -f ISO-8859-1 es_MX
187localedef -i fa_IR -f UTF-8 fa_IR
188localedef -i fr_FR -f ISO-8859-1 fr_FR
189localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
190localedef -i it_IT -f ISO-8859-1 it_IT
191localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
192
193</sect2>
194
195<sect2 role="content"><title/>
196<para>The details on this package are found in <xref linkend="contents-glibc"/>.</para>
197</sect2>
198
199</sect1>
Note: See TracBrowser for help on using the repository browser.