source: chapter06/glibc.xml@ 287ea55

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 287ea55 was 342b176, checked in by Alex Gronenwoud <alex@…>, 20 years ago

Merging configaration subsections into their corresponding sections.

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

  • Property mode set to 100644
File size: 8.0 KB
Line 
1<sect1 id="ch-system-glibc" xreflabel="Glibc">
2<title>Installing Glibc-&glibc-version;</title>
3<?dbhtml filename="glibc.html" dir="chapter06"?>
4
5<para>The Glibc package contains the main C library. This library provides all
6the basic routines for allocating memory, searching directories, opening and
7closing files, reading and writing them, string handling, pattern matching,
8arithmetic, and so on.</para>
9
10<screen>&buildtime; &glibc-time;
11&diskspace; &glibc-compsize;</screen>
12
13&aa-glibc-down;
14&aa-glibc-dep;
15
16<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
17
18<sect2>
19<title>Installation of Glibc</title>
20
21<para>The Glibc build system is very well self-contained and will install
22perfectly, even though our compiler specs file and linker are still pointing
23at <filename>/tools</filename>. We cannot adjust the specs and linker before
24the Glibc install, because the Glibc autoconf tests would then give bogus
25results and thus defeat our goal of achieving a clean build.</para>
26
27<para>Before starting to build Glibc, remember to unset any environment
28variables that override the default optimization flags.</para>
29
30<para>The Glibc documentation recommends building Glibc outside of the source
31directory in a dedicated build directory:</para>
32
33<screen><userinput>mkdir ../glibc-build
34cd ../glibc-build</userinput></screen>
35
36<para>Now prepare Glibc for compilation:</para>
37
38<screen><userinput>../&glibc-dir;/configure --prefix=/usr \
39&nbsp;&nbsp;&nbsp;&nbsp;--disable-profile --enable-add-ons=linuxthreads \
40&nbsp;&nbsp;&nbsp;&nbsp;--libexecdir=/usr/lib --with-headers=/usr/include \
41&nbsp;&nbsp;&nbsp;&nbsp;--without-cvs</userinput></screen>
42
43<para>The meaning of the new configure options:</para>
44
45<itemizedlist>
46<listitem><para><userinput>--libexecdir=/usr/lib</userinput>: This changes the
47location of the <filename>pt_chown</filename> program from its default of
48<filename class="directory">/usr/libexec</filename> to
49<filename class="directory">/usr/lib</filename>. The use of
50<emphasis>libexec</emphasis> is considered not to be FHS-compliant because the
51FHS doesn't even mention it.</para></listitem>
52
53<listitem><para><userinput>--with-headers=/usr/include</userinput>: This
54ensures that the kernel headers in <filename>/usr/include</filename> are used
55for this build. If you don't pass this switch then the headers from
56<filename>/tools/include</filename> are used which of course is not ideal
57(although they should be identical). Using this switch has the advantage
58that you will be informed immediately should you have forgotten to install the
59kernel headers into <filename>/usr/include</filename>.</para></listitem>
60</itemizedlist>
61
62<para>Compile the package:</para>
63
64<screen><userinput>make</userinput></screen>
65
66<important><para>The test suite for Glibc in this section is considered
67<emphasis>critical</emphasis>. Our advice is to not skip it under any
68circumstance.</para></important>
69
70<para>Test the results:</para>
71
72<screen><userinput>make check</userinput></screen>
73
74<para>The test suite notes from <xref linkend="ch-tools-glibc"/> are still very much
75appropriate here. Be sure to refer back there should you have any doubts.</para>
76
77<para>Though it is a harmless message, the install stage of Glibc will
78complain about the absence of <filename>/etc/ld.so.conf</filename>. Fix this
79annoying little warning with:</para>
80
81<screen><userinput>touch /etc/ld.so.conf</userinput></screen>
82
83<para>And install the package:</para>
84
85<screen><userinput>make install</userinput></screen>
86
87<para>The locales that can make your system respond in a different language
88weren't installed by the above command. Do it with this:</para>
89
90<screen><userinput>make localedata/install-locales</userinput></screen>
91
92<para>An alternative to running the previous command is to install only those
93locales which you need or want. This can be achieved by using the
94<command>localedef</command> command. Information on this can be found in
95the <filename>INSTALL</filename> file in the Glibc source. However, there are
96a number of locales that are essential for the tests of future packages to
97pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
98following instructions, instead of the install-locales target above, will
99install the minimum set of locales necessary for the tests to run
100successfully:</para>
101
102<screen><userinput>mkdir -p /usr/lib/locale
103localedef -i de_DE -f ISO-8859-1 de_DE
104localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
105localedef -i en_HK -f ISO-8859-1 en_HK
106localedef -i en_PH -f ISO-8859-1 en_PH
107localedef -i en_US -f ISO-8859-1 en_US
108localedef -i es_MX -f ISO-8859-1 es_MX
109localedef -i fr_FR -f ISO-8859-1 fr_FR
110localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
111localedef -i it_IT -f ISO-8859-1 it_IT
112localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
113
114<para>Finally, build the linuxthreads man pages:</para>
115
116<screen><userinput>make -C ../&glibc-dir;/linuxthreads/man</userinput></screen>
117
118<para>And install these pages:</para>
119
120<screen><userinput>make -C ../&glibc-dir;/linuxthreads/man install</userinput></screen>
121
122</sect2>
123
124<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
125
126<sect2><title>Configuring Glibc</title>
127
128<para>We need to create the <filename>/etc/nsswitch.conf</filename> file,
129because, although Glibc provides defaults when this file is missing or corrupt,
130the Glibc defaults don't work well with networking. Also, our time zone needs
131to be set up.</para>
132
133<para>Create a new file <filename>/etc/nsswitch.conf</filename> by running the
134following:</para>
135
136<screen><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"</userinput>
137# Begin /etc/nsswitch.conf
138
139passwd: files
140group: files
141shadow: files
142
143publickey: files
144
145hosts: files dns
146networks: files
147
148protocols: db files
149services: db files
150ethers: db files
151rpc: db files
152
153netgroup: db files
154
155# End /etc/nsswitch.conf
156<userinput>EOF</userinput></screen>
157
158<para>To find out what time zone you're in, run the following script:</para>
159
160<screen><userinput>tzselect</userinput></screen>
161
162<para>When you've answered a few questions about your location, the script will
163output the name of your time zone, something like <emphasis>EST5EDT</emphasis>
164or <emphasis>Canada/Eastern</emphasis>. Then create the
165<filename>/etc/localtime</filename> file by running:</para>
166
167<screen><userinput>cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime</userinput></screen>
168
169<para>The meaning of the option:</para>
170
171<itemizedlist>
172<listitem><para><userinput>--remove-destination</userinput>: This is needed to
173force removal of the already existing symbolic link. The reason why we copy
174instead of symlink is to cover the situation where <filename>/usr</filename> is
175on a separate partition. This could matter, for example, when booted into single
176user mode.</para></listitem>
177</itemizedlist>
178
179<para>Of course, instead of <emphasis>Canada/Eastern</emphasis>, fill in
180the name of the time zone that the <command>tzselect</command> script
181gave you.</para>
182
183</sect2>
184
185<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
186
187<sect2>
188<title>Configuring Dynamic Loader</title>
189
190<para>By default, the dynamic loader
191(<filename>/lib/ld-linux.so.2</filename>) searches through <filename
192class="directory">/lib</filename> and <filename
193class="directory">/usr/lib</filename> for dynamic libraries that are needed
194by programs when you run them. However, if there are libraries in
195directories other than <filename class="directory">/lib</filename> and
196<filename class="directory">/usr/lib</filename>, you need to add them to
197the <filename>/etc/ld.so.conf</filename> file for the dynamic
198loader to find them. Two directories that are commonly known to contain
199additional libraries are <filename
200class="directory">/usr/local/lib</filename> and <filename
201class="directory">/opt/lib</filename>, so we add those directories to the
202dynamic loader's search path.</para>
203
204<para>Create a new file <filename>/etc/ld.so.conf</filename> by running the
205following:</para>
206
207<screen><userinput>cat &gt; /etc/ld.so.conf &lt;&lt; "EOF"</userinput>
208# Begin /etc/ld.so.conf
209
210/usr/local/lib
211/opt/lib
212
213# End /etc/ld.so.conf
214<userinput>EOF</userinput></screen>
215
216</sect2>
217
218&aa-glibc-shortdesc;
219&aa-glibc-desc;
220
221</sect1>
222
Note: See TracBrowser for help on using the repository browser.