source: chapter05/glibc.xml@ 673b0d8

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 v5_1 v5_1_1 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 673b0d8 was 673b0d8, checked in by Matthew Burgess <matthew@…>, 20 years ago
  • Merged newxml into HEAD

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

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