source: chapter05/glibc.xml@ 32a531e

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 32a531e was 0868461, checked in by Manuel Canales Esparcia <manuel@…>, 20 years ago

Removed some unneeded tags.

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

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