source: chapter05/glibc.xml@ 8a5f906

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 12.2 12.2-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/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 8a5f906 was dcff046, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Changing chapter IDs in anticipation.

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

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