source: chapter05/glibc.xml@ d9ed5f37

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.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/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since d9ed5f37 was d9ed5f37, checked in by Bruce Dubbs <bdubbs@…>, 15 years ago

Changes several instruvions to add an -v switch.

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

  • Property mode set to 100644
File size: 7.6 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-tools-glibc" role="wrap">
9 <?dbhtml filename="glibc.html"?>
10
11 <sect1info condition="script">
12 <productname>glibc</productname>
13 <productnumber>&glibc-version;</productnumber>
14 <address>&glibc-url;</address>
15 </sect1info>
16
17 <title>Glibc-&glibc-version;</title>
18
19 <indexterm zone="ch-tools-glibc">
20 <primary sortas="a-Glibc">Glibc</primary>
21 <secondary>tools</secondary>
22 </indexterm>
23
24 <sect2 role="package">
25 <title/>
26
27 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
28 href="../chapter06/glibc.xml"
29 xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
30
31 <segmentedlist>
32 <segtitle>&buildtime;</segtitle>
33 <segtitle>&diskspace;</segtitle>
34
35 <seglistitem>
36 <seg>&glibc-ch5-sbu;</seg>
37 <seg>&glibc-ch5-du;</seg>
38 </seglistitem>
39 </segmentedlist>
40
41 </sect2>
42
43 <sect2 role="installation">
44 <title>Installation of Glibc</title>
45
46 <!-- This sed can be removed for any glibc newer than 2.10.1 (along with the
47 matching sed in chapter 6). See glibc bug 10262. -->
48 <para>Fix an error in the constants that get passed to the futex system
49 call in some cases, causing certain pthread_mutex operations to fail:</para>
50
51<screen><userinput remap="pre">cp -v nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S{,.orig}
52sed -e 's/FUTEX_WAIT\( | FUTEX_CLOCK_REALTIME, reg\)/FUTEX_WAIT_BITSET\1/' \
53 &lt;nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S.orig \
54 &gt;nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S</userinput></screen>
55
56 <para>The Glibc documentation recommends building Glibc outside of the source
57 directory in a dedicated build directory:</para>
58
59<screen><userinput remap="pre">mkdir -v ../glibc-build
60cd ../glibc-build</userinput></screen>
61
62 <para>Because Glibc no longer supports i386, its developers say to use the
63 compiler flag <parameter>-march=i486</parameter> when building it for x86
64 machines. There are several ways to accomplish that, but testing shows that
65 the flag is best placed inside the build variable <quote>CFLAGS</quote>.
66 Instead of overriding completely what Glibc's internal build system uses
67 for CFLAGS, append the new flag to the existing contents of CFLAGS by
68 making use of the special file <filename>configparms</filename>. The
69 -mtune=native flag is also necessary to reset a reasonable value for -mtune
70 that is changed when setting -march.</para>
71
72<screen><userinput remap="configure">case `uname -m` in
73 i?86) echo "CFLAGS += -march=i486 -mtune=native" &gt; configparms ;;
74esac</userinput></screen>
75
76 <para>Next, prepare Glibc for compilation:</para>
77
78<screen><userinput remap="configure">../glibc-&glibc-version;/configure --prefix=/tools \
79 --host=$LFS_TGT --build=$(../glibc-&glibc-version;/scripts/config.guess) \
80 --disable-profile --enable-add-ons \
81 --enable-kernel=2.6.18 --with-headers=/tools/include \
82 libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes</userinput></screen>
83
84 <variablelist>
85 <title>The meaning of the configure options:</title>
86
87 <varlistentry>
88 <term><parameter>--host=$LFS_TGT, --build=$(../glibc-&glibc-version;/scripts/config.guess)</parameter></term>
89 <listitem>
90 <para>The combined effect of these switches is that Glibc's build system
91 configures itself to cross-compile, using the cross-linker and
92 cross-compiler in <filename class="directory">/tools</filename>.</para>
93 </listitem>
94 </varlistentry>
95
96 <varlistentry>
97 <term><parameter>--disable-profile</parameter></term>
98 <listitem>
99 <para>This builds the libraries without profiling information. Omit
100 this option if profiling on the temporary tools is necessary.</para>
101 </listitem>
102 </varlistentry>
103
104 <varlistentry>
105 <term><parameter>--enable-add-ons</parameter></term>
106 <listitem>
107 <para>This tells Glibc to use the NPTL add-on as its threading
108 library.</para>
109 </listitem>
110 </varlistentry>
111
112 <varlistentry>
113 <term><parameter>--enable-kernel=2.6.18</parameter></term>
114 <listitem>
115 <para>This tells Glibc to compile the library with support
116 for 2.6.18 and later Linux kernels. Workarounds for older
117 kernels are not enabled.</para>
118 </listitem>
119 </varlistentry>
120
121 <varlistentry>
122 <term><parameter>--with-headers=/tools/include</parameter></term>
123 <listitem>
124 <para>This tells Glibc to compile itself against the headers recently
125 installed to the tools directory, so that it knows exactly what
126 features the kernel has and can optimize itself accordingly.</para>
127 </listitem>
128 </varlistentry>
129
130 <varlistentry>
131 <term><parameter>libc_cv_forced_unwind=yes</parameter></term>
132 <listitem>
133 <para>The build requires support for forced unwind, but because it is
134 being cross compiled, it cannot auto detect it. Setting this variable
135 on the command line explicitly tells the
136 <command>configure</command> script that support is available.</para>
137 </listitem>
138 </varlistentry>
139 <varlistentry>
140 <term><parameter>libc_cv_c_cleanup=yes</parameter></term>
141 <listitem>
142 <para>The build also requires support for C cleanup handling, which it
143 cannot auto detect when being cross compiled. Enable it explicitly.</para>
144 </listitem>
145 </varlistentry>
146
147 </variablelist>
148
149 <para>During this stage the following warning might appear:</para>
150
151 <blockquote>
152<screen><computeroutput>configure: WARNING:
153*** These auxiliary programs are missing or
154*** incompatible versions: msgfmt
155*** some features will be disabled.
156*** Check the INSTALL file for required versions.</computeroutput></screen>
157 </blockquote>
158
159 <para>The missing or incompatible <command>msgfmt</command> program is
160 generally harmless, but it can sometimes cause issues when running the
161 test suite. This <command>msgfmt</command> program is part of the
162 Gettext package which the host distribution should provide. If
163 <command>msgfmt</command> is present but deemed incompatible, upgrade
164 the host system's Gettext package or continue without it and see if
165 the test suite runs without problems regardless.</para>
166
167 <para>Compile the package:</para>
168
169<screen><userinput remap="make">make</userinput></screen>
170
171 <para>This package does come with a test suite, however, it cannot be
172 run at this time because we do not have a C++ compiler yet.</para>
173
174 <note>
175 <para>The test suite also requires locale data to be installed in order to run
176 successfully. Locale data provides information to the system regarding
177 such things as the date, time, and currency formats accepted and output by
178 system utilities. If the test suites are not being run in this chapter
179 (as per the recommendation), there is no need to install the locales now.
180 The appropriate locales will be installed in the next chapter. To install
181 the Glibc locales anyway, use instructions from <xref
182 linkend="ch-system-glibc" role="."/></para>
183 </note>
184
185 <para>Install the package:</para>
186
187<screen><userinput remap="install">make install</userinput></screen>
188
189 </sect2>
190
191 <sect2 role="content">
192 <title/>
193
194 <para>Details on this package are located in
195 <xref linkend="contents-glibc" role="."/></para>
196
197 </sect2>
198
199</sect1>
Note: See TracBrowser for help on using the repository browser.