aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/glibc-exp.xml
blob: 2f34bc2ef777af275e44333e3817e1457eea9f18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<sect2>
<title>Command explanations</title>

<para><userinput>patch -Np1 -i ../glibc-&glibc-patch-version;.patch:</userinput>
This patch converts all occurrences of <filename>$(PERL)</filename> to
<filename>/usr/bin/perl</filename> in the
<filename>malloc/Makefile</filename> file. This is done because Glibc can't
autodetect the location of perl because perl has yet to be installed. The
patch also replaces all occurrences of <emphasis>root</emphasis> with
<emphasis>0</emphasis> in the <filename>login/Makefile</filename> file.
This is done because Glibc itself isn't installed yet and therefore
username to userid resolving isn't working yet, so a <userinput>chown root
file</userinput> will fail, however it'll work fine if you use the numeric
IDs.</para>

<para>Lastly, the patch also fixes a problem that causes statically linked
binaries to crash that were linked against Glibc-2.2 libraries. This patch
is only needed temporarily because we have static programs in <filename
class="directory">/static/bin</filename> that might be linked against an
older Glibc version (the one from the host distribution). We will install
Glibc again at the end of this chapter to remove this patch so you'll have
a pristine Glibc as the developers intended it.</para>

<para><userinput>touch /etc/ld.so.conf:</userinput> One of the final steps
of the Glibc installation is running ldconfig to update the dynamic loader
cache. If this file doesn't exist, the installation will abort with an error
that it can't read the file, so we simply create an empty file (the empty
file will have Glibc default to using /lib and /usr/lib which is fine).</para>

<para><userinput>--disable-profile:</userinput> This disables the building
of libraries with profiling information. This command may be omitted if
you plan to do profiling.</para>

<para><userinput>--enable-add-ons:</userinput> This enables the add-on that
we install with Glibc, linuxthreads</para>

<para><userinput>--libexecdir=/usr/bin:</userinput> This will cause the
pt_chown program to be installed in the /usr/bin directory.</para>

<para><userinput>echo "cross-compiling = no" &gt; configparms:</userinput>
We do this because we are only building for our own system. Cross-compiling
is used, for instance, to build a package for an Apple Power PC on an
Intel system. The reason Glibc thinks we're cross-compiling is that it
can't compile a test program to determine this, so it automatically defaults
to a cross-compiler. Compiling the test program fails because Glibc hasn't
been installed yet.</para>

<para><userinput>exec /static/bin/bash --login:</userinput> This command will
start a new bash shell which will replace the current shell. This is 
done to get rid of the "I have no name!" message in the command 
prompt, which was caused by bash's inability to resolve a user ID to 
a user name (which in turn was caused by the absence of Glibc).</para>

</sect2>