source: chapter05/glibc.xml@ bc37722c

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 6.0 6.1 6.1.1 6.3 6.4 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/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since bc37722c was 9652249, checked in by Manuel Canales Esparcia <manuel@…>, 20 years ago

HEAD: Retaged the SBUs/disk-usage sections, the lists of options and the contents sections in chapter05.

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

  • Property mode set to 100644
File size: 9.5 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 <emphasis>-march</emphasis> and
32<emphasis>-mcpu</emphasis> 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><userinput>--disable-profile</userinput></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><userinput>--enable-add-ons=nptl</userinput></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><userinput>--with-tls</userinput></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><userinput>--with-binutils=/tools/bin</userinput></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><userinput>--without-gd</userinput></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><userinput>--without-cvs</userinput></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><userinput>--with-headers=/tools/glibc-kernheaders</userinput></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>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.</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, we don't recommend
121running the test suites for the temporary system here in this chapter. If you
122still want to run the Glibc test suite anyway, the following command will do
123so:</para>
124
125<screen><userinput>make check</userinput></screen>
126
127<para>The Glibc test suite is highly dependent on certain functions of your host
128system, in particular the kernel. Additionally, here in this chapter some tests
129can be adversely affected by existing tools or environmental issues on the host
130system. Of course, these won't be a problem when we run the Glibc test suite
131inside the chroot environment of <xref linkend="chapter-building-system"/>. In
132general, the Glibc test suite is always expected to pass. However, as mentioned
133above, in certain circumstances some failures are unavoidable. Here is a list
134of the most common issues we are aware of:</para>
135
136<itemizedlist>
137<listitem><para>The <emphasis>math</emphasis> tests sometimes fail when running
138on systems where the CPU is not a relatively new genuine Intel or authentic AMD.
139Certain optimization settings are also known to be a factor here.</para></listitem>
140
141<listitem><para>The <emphasis>gettext</emphasis> test sometimes fails due to
142host system issues. The exact reasons are not yet clear.</para></listitem>
143
144<listitem><para>The <emphasis>atime</emphasis> test sometimes fails when the
145LFS partition is mounted with the <emphasis>noatime</emphasis> option, or due
146to other file system quirks.</para></listitem>
147
148<listitem><para>The <emphasis>shm</emphasis> test might fail when the host
149system is running the devfs file system but doesn't have the tmpfs file system
150mounted at <filename>/dev/shm</filename> due to lack of support for tmpfs in
151the kernel.</para></listitem>
152
153<listitem><para>When running on older and slower hardware, some tests might
154fail due to test timeouts being exceeded.</para></listitem>
155</itemizedlist>
156
157<para>In summary, don't worry too much if you see Glibc test suite failures
158here in this chapter. The Glibc in <xref linkend="chapter-building-system"/> is
159the one we'll ultimately end up using, so that is the one we would really like
160to see pass the tests (but even there some failures could still occur -- the
161<emphasis>math</emphasis> tests, for example). When experiencing a failure,
162make a note of it, then continue by reissuing the <command>make
163check</command>. The test suite should pick up where it left off and continue.
164You can circumvent this stop-start sequence by issuing a <command>make -k
165check</command>. But if you do that, be sure to log the output so that you can
166later peruse the log file and examine the total number of failures.</para>
167
168<para>Though it is a harmless message, the install stage of Glibc will at the
169end complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
170Prevent this confusing little warning with:</para>
171
172<screen><userinput>mkdir /tools/etc
173touch /tools/etc/ld.so.conf</userinput></screen>
174
175<para>Now install the package:</para>
176
177<screen><userinput>make install</userinput></screen>
178
179<para>Different countries and cultures have varying conventions for how to
180communicate. These conventions range from very simple ones, such as the format
181for representing dates and times, to very complex ones, such as the language
182spoken. The <quote>internationalization</quote> of GNU programs works by means
183of <emphasis>locales</emphasis>.</para>
184
185<note><para>If you are not running the test suites here in this chapter as per
186our recommendation, there is little point in installing the locales now. We'll
187be installing the locales in the next chapter.</para></note>
188
189<para>If you still want to install the Glibc locales anyway, the following
190command will do so:</para>
191
192<screen><userinput>make localedata/install-locales</userinput></screen>
193
194<para>An alternative to running the previous command is to install only those
195locales which you need or want. This can be achieved by using the
196<command>localedef</command> command. Information on this can be found in
197the <filename>INSTALL</filename> file in the Glibc source. However, there are
198a number of locales that are essential for the tests of future packages to
199pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
200following instructions, instead of the install-locales target above, will
201install the minimum set of locales necessary for the tests to run
202successfully:</para>
203
204<screen><userinput>mkdir -p /tools/lib/locale
205localedef -i de_DE -f ISO-8859-1 de_DE
206localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
207localedef -i en_HK -f ISO-8859-1 en_HK
208localedef -i en_PH -f ISO-8859-1 en_PH
209localedef -i en_US -f ISO-8859-1 en_US
210localedef -i es_MX -f ISO-8859-1 es_MX
211localedef -i fa_IR -f UTF-8 fa_IR
212localedef -i fr_FR -f ISO-8859-1 fr_FR
213localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
214localedef -i it_IT -f ISO-8859-1 it_IT
215localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
216
217</sect2>
218
219<sect2 role="content"><title/>
220<para>The details on this package are found in <xref linkend="contents-glibc"/>.</para>
221</sect2>
222
223</sect1>
Note: See TracBrowser for help on using the repository browser.