Added a few comments here and there
[linux_from_scratch.git] / BOOK / chapter06 / zlib.xml
blob8dc8e7817ca02a194930448c6e9a8ebccb0d593a
1 <sect1 id="ch-system-zlib" xreflabel="Zlib">
2 <title>Installing Zlib-&zlib-version;</title>
3 <?dbhtml filename="zlib.html" dir="chapter06"?>
5 <para>The Zlib package contains compression and uncompression routines used by
6 some programs.</para>
8 <screen>&buildtime; &zlib-time;
9 &diskspace; &zlib-compsize;</screen>
11 &aa-zlib-down;
12 &aa-zlib-dep;
14 <sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
16 <sect2>
17 <title>Installation of Zlib</title>
19 <note><para>Zlib is known to build its shared library incorrectly if CFLAGS is
20 specified in the environment. If you are using your own CFLAGS variable, be
21 sure to add the <emphasis>-fPIC</emphasis> directive to your CFLAGS for the
22 duration of the below <command>configure</command> command, then remove it
23 afterwards.</para></note>
25 <para>Prepare Zlib for compilation:</para>
27 <screen><userinput>./configure --prefix=/usr --shared</userinput></screen>
29 <para>Compile the package:</para>
31 <screen><userinput>make</userinput></screen>
33 <para>This package has a test suite available which can perform a number of
34 checks to ensure it built correctly. The test suite for Zlib is quick and
35 painless so we recommend it be run. The following command will test the shared
36 library:</para>
38 <screen><userinput>make check</userinput></screen>
40 <para>Install the shared library:</para>
42 <screen><userinput>make install</userinput></screen>
44 <para>Now also build the non-shared (static) library:</para>
45 <screen><userinput>make clean
46 ./configure --prefix=/usr
47 make</userinput></screen>
49 <para>The following command will test the static library:</para>
51 <screen><userinput>make check</userinput></screen>
53 <para>Install the static library:</para>
55 <screen><userinput>make install</userinput></screen>
57 <para>And fix the permissions on the static library:</para>
59 <screen><userinput>chmod 644 /usr/lib/libz.a</userinput></screen>
61 <para>It is good policy and common practice to place important libraries into
62 the <filename class="directory">/lib</filename> directory. This matters most
63 in scenarios where <filename class="directory">/usr</filename> is on a
64 separate partition. Essentially, the run-time components of any libraries
65 depended upon by programs in <filename class="directory">/bin</filename> or
66 <filename class="directory">/sbin</filename> should reside in
67 <filename class="directory">/lib</filename> so that they are on the root
68 partition and available in the event of
69 <filename class="directory">/usr</filename> being inaccessible.</para>
71 <para>Therefore we move the run-time components of the shared Zlib into
72 <filename class="directory">/lib</filename> by issuing the following
73 command:</para>
75 <screen><userinput>mv /usr/lib/libz.so.* /lib</userinput></screen>
77 <para>Now we need to fix up the <filename>/usr/lib/libz.so</filename> symlink
78 because we just moved the location of the file it points to:</para>
80 <screen><userinput>ln -sf ../../lib/libz.so.1 /usr/lib/libz.so</userinput></screen>
82 </sect2>
84 &aa-zlib-shortdesc;
85 &aa-zlib-desc;
87 </sect1>