source: chapter06/glibc.xml@ 0b43834

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 0b43834 was 5888299, checked in by Alex Gronenwoud <alex@…>, 20 years ago

Moving stuff from appendix A to chapter 6.

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

  • Property mode set to 100644
File size: 5.3 KB
Line 
1<sect1 id="ch06-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>Estimated build time: &glibc-time;
11Estimated required disk space: &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<note><para>The test suite for Glibc in this section is considered
28<emphasis>critical</emphasis>. Our advice is to not skip it under any
29circumstance.</para></note>
30
31<para>Before starting to build Glibc, remember to unpack the Glibc-linuxthreads
32again inside the <filename>glibc-&glibc-version;</filename> directory, and to
33unset any environment variables that override the default optimization
34flags.</para>
35
36<para>Apply the same patch we used previously:</para>
37
38<screen><userinput>patch -Np1 -i ../&glibc-sscanf-patch;</userinput></screen>
39
40<para>The Glibc documentation recommends building Glibc outside of the source
41directory in a dedicated build directory:</para>
42
43<screen><userinput>mkdir ../glibc-build
44cd ../glibc-build</userinput></screen>
45
46<para>Now prepare Glibc for compilation:</para>
47
48<screen><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
49&nbsp;&nbsp;&nbsp;&nbsp;--disable-profile --enable-add-ons \
50&nbsp;&nbsp;&nbsp;&nbsp;--libexecdir=/usr/lib --with-headers=/usr/include</userinput></screen>
51
52<para>The meaning of the new configure options:</para>
53
54<itemizedlist>
55<listitem><para><userinput>--libexecdir=/usr/lib</userinput>: This changes the
56location of the <filename>pt_chown</filename> program from its default of
57<filename class="directory">/usr/libexec</filename> to
58<filename class="directory">/usr/lib</filename>. The use of
59<emphasis>libexec</emphasis> is considered not FHS compliant because the FHS
60doesn't even mention it.</para></listitem>
61
62<listitem><para><userinput>--with-headers=/usr/include</userinput>: This
63ensures that the kernel headers in <filename>/usr/include</filename> are used
64for this build. If you don't pass this switch then the headers from
65<filename>/tools/include</filename> are used which of course is not ideal
66(although they should be identical). Using this switch has the advantage
67that you will be informed immediately should you have forgotten to install the
68kernel headers into <filename>/usr/include</filename>.</para></listitem>
69</itemizedlist>
70
71<para>Compile the package:</para>
72
73<screen><userinput>make</userinput></screen>
74
75<para>Test the results:</para>
76
77<screen><userinput>make check</userinput></screen>
78
79<para>The test suite notes from <xref linkend="ch05-glibc"/> are still very much
80appropriate here. Be sure to refer back there should you have any doubts.</para>
81
82<para>Though it is a harmless message, the install stage of Glibc will
83complain about the absence of <filename>/etc/ld.so.conf</filename>. Fix this
84annoying little warning with:</para>
85
86<screen><userinput>touch /etc/ld.so.conf</userinput></screen>
87
88<para>And install the package:</para>
89
90<screen><userinput>make install</userinput></screen>
91
92<para>The locales that can make your system respond in a different language
93weren't installed by the above command. Do it with this:</para>
94
95<screen><userinput>make localedata/install-locales</userinput></screen>
96
97<para>An alternative to running the previous command is to install only those
98locales which you need or want. This can be achieved using the
99<userinput>localedef</userinput> command. Information on this can be found in
100the <filename>INSTALL</filename> file in the
101<filename>glibc-&glibc-version;</filename> tree. However, there are a number
102of locales that are essential for the tests of future packages to pass
103correctly. The following instructions, in place of the install-locales
104command above, will install the minimum set of locales necessary for the
105tests to run successfully:</para>
106
107<screen><userinput>mkdir -p /usr/lib/locale
108localedef -i de_DE -f ISO-8859-1 de_DE
109localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
110localedef -i en_HK -f ISO-8859-1 en_HK
111localedef -i en_PH -f ISO-8859-1 en_PH
112localedef -i en_US -f ISO-8859-1 en_US
113localedef -i es_MX -f ISO-8859-1 es_MX
114localedef -i fr_FR -f ISO-8859-1 fr_FR
115localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
116localedef -i it_IT -f ISO-8859-1 it_IT
117localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
118
119<para>Finally, build the linuxthreads man pages:</para>
120
121<screen><userinput>make -C ../&glibc-dir;/linuxthreads/man</userinput></screen>
122
123<para>And install these pages:</para>
124
125<screen><userinput>make -C ../&glibc-dir;/linuxthreads/man install</userinput></screen>
126
127</sect2>
128
129&c6-cf-glibc;
130
131&aa-glibc-shortdesc;
132&aa-glibc-desc;
133
134</sect1>
135
Note: See TracBrowser for help on using the repository browser.