source: chapter05/glibc.xml@ 77d2cd8d

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 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 77d2cd8d was 77d2cd8d, checked in by Pierre Labastie <pieere@…>, 4 years ago
  • fix some gcc->GCC
  • remove commented text in glibc (chap 5), and fix a directory location

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/cross2@11934 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 8.0 KB
RevLine 
[673b0d8]1<?xml version="1.0" encoding="ISO-8859-1"?>
[b06ca36]2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
[673b0d8]4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
[1f7ca93]7
[9652249]8<sect1 id="ch-tools-glibc" role="wrap">
[1f7ca93]9 <?dbhtml filename="glibc.html"?>
10
[e747759]11 <sect1info condition="script">
12 <productname>glibc</productname>
13 <productnumber>&glibc-version;</productnumber>
14 <address>&glibc-url;</address>
15 </sect1info>
16
[1f7ca93]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/>
[bc82645e]26
[d9441360]27 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
[fcc02767]28 href="../chapter08/glibc.xml"
[1f7ca93]29 xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
[81fd230]30
[1f7ca93]31 <segmentedlist>
32 <segtitle>&buildtime;</segtitle>
33 <segtitle>&diskspace;</segtitle>
[673b0d8]34
[1f7ca93]35 <seglistitem>
[fb386e0]36 <seg>&glibc-tmp-sbu;</seg>
37 <seg>&glibc-tmp-du;</seg>
[1f7ca93]38 </seglistitem>
39 </segmentedlist>
[673b0d8]40
[1f7ca93]41 </sect2>
[73aedd1d]42
[1f7ca93]43 <sect2 role="installation">
44 <title>Installation of Glibc</title>
[6fc168b]45
[efcb393]46 <para>First, create two symbolic links, which are needed for proper
47 operation of the dynamic library loader:</para>
48
49<screen><userinput remap="pre">ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
50ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3</userinput></screen>
51
52 <para>Some of the Glibc programs use the non-FHS compliant
53 <filename class="directory">/var/db</filename> directory to store their
54 runtime data. Apply the following patch to make such programs store their
55 runtime data in the FHS-compliant locations:</para>
56
57<screen><userinput remap="pre">patch -Np1 -i ../glibc-&glibc-version;-fhs-1.patch</userinput></screen>
58
[f1dd547]59 <para>The Glibc documentation recommends building Glibc
60 in a dedicated build directory:</para>
[9bda40d]61
[f1dd547]62<screen><userinput remap="pre">mkdir -v build
63cd build</userinput></screen>
[f1c177f]64
[1f7ca93]65 <para>Next, prepare Glibc for compilation:</para>
[73aedd1d]66
[63df8c7]67<screen><userinput remap="configure">../configure \
[efcb393]68 --prefix=/usr \
[63df8c7]69 --host=$LFS_TGT \
70 --build=$(../scripts/config.guess) \
[c10c983]71 --enable-kernel=&min-kernel; \
[efcb393]72 --with-headers=$LFS/usr/include \
73 libc_cv_slibdir=/lib</userinput></screen>
[c10c983]74<!--
[63df8c7]75 libc_cv_forced_unwind=yes \
[c10c983]76 libc_cv_c_cleanup=yes</userinput></screen> -->
[73aedd1d]77
[1f7ca93]78 <variablelist>
79 <title>The meaning of the configure options:</title>
80
[4e82d47]81 <varlistentry>
[418b038]82 <term><parameter>--host=$LFS_TGT, --build=$(../scripts/config.guess)</parameter></term>
[4e82d47]83 <listitem>
84 <para>The combined effect of these switches is that Glibc's build system
[efcb393]85 configures itself to be cross-compiled, using the cross-linker and
[4e82d47]86 cross-compiler in <filename class="directory">/tools</filename>.</para>
87 </listitem>
88 </varlistentry>
[1118b17]89
[1f7ca93]90 <varlistentry>
[70cd9f32]91 <term><parameter>--enable-kernel=&min-kernel;</parameter></term>
[1f7ca93]92 <listitem>
93 <para>This tells Glibc to compile the library with support
[70cd9f32]94 for &min-kernel; and later Linux kernels. Workarounds for older
[3532721]95 kernels are not enabled.</para>
[1f7ca93]96 </listitem>
97 </varlistentry>
[1118b17]98
[1f7ca93]99 <varlistentry>
[efcb393]100 <term><parameter>--with-headers=$LFS/usr/include</parameter></term>
[1f7ca93]101 <listitem>
[77d2cd8d]102 <para>This tells Glibc to compile itself against the headers
103 recently installed to the $LFS/usr/include directory, so that
104 it knows exactly what features the kernel has and can optimize
105 itself accordingly.</para>
[1f7ca93]106 </listitem>
107 </varlistentry>
[efcb393]108
[1f7ca93]109 <varlistentry>
[efcb393]110 <term><parameter>libc_cv_slibdir=/lib</parameter></term>
[1f7ca93]111 <listitem>
[efcb393]112 <para>This ensures that the library is installed in /lib instead
113 of the default /lib64 on 64 bit machines.</para>
[4e82d47]114 </listitem>
115 </varlistentry>
[1f7ca93]116
117 </variablelist>
118
119 <para>During this stage the following warning might appear:</para>
120
121 <blockquote>
122<screen><computeroutput>configure: WARNING:
123*** These auxiliary programs are missing or
[81fd230]124*** incompatible versions: msgfmt
125*** some features will be disabled.
[1f7ca93]126*** Check the INSTALL file for required versions.</computeroutput></screen>
127 </blockquote>
[81fd230]128
[1f7ca93]129 <para>The missing or incompatible <command>msgfmt</command> program is
[5f7456b]130 generally harmless. This <command>msgfmt</command> program is part of the
131 Gettext package which the host distribution should provide.</para>
[81fd230]132
[7b1923d]133 <note><para>There have been reports that this package may fail when
134 building as a "parallel make". If this occurs, rerun the make command
135 with a "-j1" option.</para></note>
136
[1f7ca93]137 <para>Compile the package:</para>
[73aedd1d]138
[0445a3d]139<screen><userinput remap="make">make</userinput></screen>
[73aedd1d]140
[1f7ca93]141 <para>Install the package:</para>
[73aedd1d]142
[6a156bab]143 <warning><para>If <envar>LFS</envar> is not properly set, and despite the
[192c668]144 recommendations, you are building as root, the next command will install
145 the newly built glibc to your host system, which most likely will render it
146 unusable. So double check that the environment is correctly set for user
147 <systemitem class="username">lfs</systemitem>.</para></warning>
148
[efcb393]149<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
150
151 <variablelist>
152 <title>The meaning of the <command>make install</command> option:</title>
153
154 <varlistentry>
155 <term><parameter>DESTDIR=$LFS</parameter></term>
156 <listitem>
157 <para>The <envar>DESTDIR</envar> make variable is used by almost all
158 packages to define the location where the package should be
159 installed. If it is not set, it defaults to the root (<filename
160 class="directory">/</filename>) directory. Here we specify that
161 the package be installed in <filename class="directory">$LFS
162 </filename>, which will become the root after <xref linkend=
163 "ch-tools-chroot"/>.</para>
164 </listitem>
165 </varlistentry>
166
167 </variablelist>
[73aedd1d]168
[efcb393]169 <caution>
170 <para>At this point, it is imperative to stop and ensure that the basic
171 functions (compiling and linking) of the new toolchain are working as
172 expected. To perform a sanity check, run the following commands:</para>
[1a3e6a3]173
[3d56263]174<screen><userinput>echo 'int main(){}' &gt; dummy.c
[1a3e6a3]175$LFS_TGT-gcc dummy.c
[efcb393]176readelf -l a.out | grep '/ld-linux'</userinput></screen>
[1a3e6a3]177
[efcb393]178 <para>If everything is working correctly, there should be no errors,
179 and the output of the last command will be of the form:</para>
[1a3e6a3]180
[efcb393]181<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
[1a3e6a3]182
[efcb393]183 <para>Note that for 32-bit machines, the interpreter name will be
184 <filename>/lib/ld-linux.so.2</filename>.</para>
[1a3e6a3]185
[efcb393]186 <para>If the output is not shown as above or there was no output at all,
187 then something is wrong. Investigate and retrace the steps to find out
188 where the problem is and correct it. This issue must be resolved before
189 continuing on.</para>
[1a3e6a3]190
[efcb393]191 <para>Once all is well, clean up the test files:</para>
[1a3e6a3]192
193<screen><userinput>rm -v dummy.c a.out</userinput></screen>
194
[efcb393]195 </caution>
196
[79524a0]197 <note><para>Building packages in the next chapter will serve as an
[efcb393]198 additional check that the toolchain has been built properly. If some
199 package, especially binutils-pass2 or gcc-pass2, fails to build, it is
200 an indication that something has gone wrong with the
201 previous Binutils, GCC, or Glibc installations.</para></note>
202
203 <para>Now that our cross-toolchain is complete, finalize the installation
[79524a0]204 of the limits.h header. For doing so, run a utility provided by the GCC
[efcb393]205 developers:</para>
[1a3e6a3]206
[efcb393]207<screen><userinput>$LFS/tools/libexec/gcc/$LFS_TGT/&gcc-version;/install-tools/mkheaders</userinput></screen>
[1a3e6a3]208
[1f7ca93]209 </sect2>
[bc82645e]210
[1f7ca93]211 <sect2 role="content">
212 <title/>
[81fd230]213
[1f7ca93]214 <para>Details on this package are located in
215 <xref linkend="contents-glibc" role="."/></para>
216
217 </sect2>
[81fd230]218
[1f7ca93]219</sect1>
Note: See TracBrowser for help on using the repository browser.