source: chapter05/glibc.xml@ b3c46bf7

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.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/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since b3c46bf7 was 7e2b777, checked in by Jim Gifford <jim@…>, 20 years ago

Updated glibc instructions to include --with-thread for TLS, --enable-kernel=2.6.0 for 2.6.x kernel support, and added pt_chown for Unix 98 pty support

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3973 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" 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-__thread --enable-kernel=2.6.0 --with-binutils=/tools/bin \
50 --without-gd --without-cvs --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-__thread</parameter></term>
76<listitem><para>This tells Glibc to include thread support, this is for proper
77compiling of the thread-local storage.</para></listitem>
78</varlistentry>
79
80<varlistentry>
81<term><parameter>--enable-kernel=2.6.0</parameter></term>
82<listitem><para>This tells Glibc to compile the library for support of
83linux 2.6.x kernels.
84</para></listitem>
85</varlistentry>
86
87<varlistentry>
88<term><parameter>--with-binutils=/tools/bin</parameter></term>
89<listitem><para>Strictly speaking this switch is not required. But it does ensure
90nothing can go wrong with regard to what Binutils programs get used during the
91Glibc build.</para></listitem>
92</varlistentry>
93
94<varlistentry>
95<term><parameter>--without-gd</parameter></term>
96<listitem><para>This prevents the build of the <command>memusagestat</command>
97program, which strangely enough insists on linking against the host's libraries
98(libgd, libpng, libz, and so forth). </para></listitem>
99</varlistentry>
100
101<varlistentry>
102<term><parameter>--without-cvs</parameter></term>
103<listitem><para>This is meant to prevent
104the Makefiles from attempting automatic CVS checkouts when using a CVS
105snapshot. But it's not actually needed these days. We use it because it
106suppresses an annoying but harmless warning about a missing
107<command>autoconf</command> program.</para></listitem>
108</varlistentry>
109
110<varlistentry>
111<term><parameter>--with-headers=/tools/glibc-kernheaders</parameter></term>
112<listitem><para>This tells Glibc to compile against the <quote>raw</quote>
113kernel headers, so that it knows exactly what features the kernel has, and can
114optimize itself accordingly. Not strictly necessary, but nice to have.</para></listitem>
115</varlistentry>
116</variablelist>
117
118<para>During this stage you might see the following warning:</para>
119
120<blockquote><screen><computeroutput>configure: WARNING:
121*** These auxiliary programs are missing or incompatible versions: msgfmt
122*** some features will be disabled.
123*** Check the INSTALL file for required versions.</computeroutput></screen></blockquote>
124
125<para>The missing or incompatible <command>msgfmt</command> program is
126generally harmless, but it's believed it can sometimes cause problems when
127running the test suite.</para>
128
129<para>Compile the package:</para>
130
131<screen><userinput>make</userinput></screen>
132
133<para>Compilation is now complete. As mentioned earlier, running the test suites
134for the temporary tools installed in this chapter is not mandatory. If you want
135to run the Glibc test suite though, the following command will do so:</para>
136
137<screen><userinput>make check</userinput></screen>
138
139<para>For a discussion of test failures that are of particular
140importance, please see <xref linkend="ch-system-glibc"/>.</para>
141
142<para>In this chapter, some tests can be adversely affected by existing tools or
143environmental issues on the host system. In short, don't worry too much if you
144see Glibc test suite failures in this chapter. The Glibc in
145<xref linkend="chapter-building-system"/> is the one we'll ultimately end up
146using, so that is the one we would really like to see pass the tests (but even
147there some failures could still occur -- the <emphasis>math</emphasis> tests,
148for example).</para>
149
150<para>When experiencing a failure, make a note of it, then continue by reissuing
151the <command>make check</command>. The test suite should pick up where it left
152off and continue. You can circumvent this stop-start sequence by issuing a
153<command>make -k check</command>. If you do that though, be sure to log the
154output so that you can later peruse the log file and examine the total number of
155failures.</para>
156
157<para>Though it is a harmless message, the install stage of Glibc will at the
158end complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
159Prevent this confusing little warning with:</para>
160
161<screen><userinput>mkdir /tools/etc
162touch /tools/etc/ld.so.conf</userinput></screen>
163
164<para>Now install the package:</para>
165
166<screen><userinput>make install</userinput></screen>
167
168<para>Different countries and cultures have varying conventions for how to
169communicate. These conventions range from very simple ones, such as the format
170for representing dates and times, to very complex ones, such as the language
171spoken. The <quote>internationalization</quote> of GNU programs works by means
172of <emphasis>locales</emphasis>.</para>
173
174<note><para>If you are not running the test suites here in this chapter as per
175our recommendation, there is little point in installing the locales now. We'll
176be installing the locales in the next chapter.</para></note>
177
178<para>If you still want to install the Glibc locales anyway, the following
179command will do so:</para>
180
181<screen><userinput>make localedata/install-locales</userinput></screen>
182
183<para>An alternative to running the previous command is to install only those
184locales which you need or want. This can be achieved by using the
185<command>localedef</command> command. Information on this can be found in
186the <filename>INSTALL</filename> file in the Glibc source. However, there are
187a number of locales that are essential for the tests of future packages to
188pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
189following instructions, instead of the install-locales target above, will
190install the minimum set of locales necessary for the tests to run
191successfully:</para>
192
193<screen><userinput>mkdir -p /tools/lib/locale
194localedef -i de_DE -f ISO-8859-1 de_DE
195localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
196localedef -i en_HK -f ISO-8859-1 en_HK
197localedef -i en_PH -f ISO-8859-1 en_PH
198localedef -i en_US -f ISO-8859-1 en_US
199localedef -i es_MX -f ISO-8859-1 es_MX
200localedef -i fa_IR -f UTF-8 fa_IR
201localedef -i fr_FR -f ISO-8859-1 fr_FR
202localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
203localedef -i it_IT -f ISO-8859-1 it_IT
204localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
205
206</sect2>
207
208<sect2 role="content"><title/>
209<para>The details on this package are found in <xref linkend="contents-glibc"/>.</para>
210</sect2>
211
212</sect1>
Note: See TracBrowser for help on using the repository browser.