glibc.xml 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
  3. <!ENTITY % general-entities SYSTEM "../general.ent">
  4. %general-entities;
  5. ]>
  6. <sect1 id="ch-tools-glibc" role="wrap">
  7. <title>Glibc-&glibc-version;</title>
  8. <?dbhtml filename="glibc.html"?>
  9. <indexterm zone="ch-tools-glibc">
  10. <primary sortas="a-Glibc">Glibc</primary>
  11. <secondary>tools</secondary></indexterm>
  12. <sect2 role="package"><title/>
  13. <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/glibc.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
  14. <segmentedlist>
  15. <segtitle>&buildtime;</segtitle>
  16. <segtitle>&diskspace;</segtitle>
  17. <seglistitem><seg>11.8 SBU</seg><seg>800 MB</seg></seglistitem>
  18. </segmentedlist>
  19. <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/glibc.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
  20. </sect2>
  21. <sect2 role="installation">
  22. <title>Installation of Glibc</title>
  23. <para>This package is known to behave badly when you change its default
  24. optimization flags (including the <parameter>-march</parameter> and
  25. <parameter>-mcpu</parameter> options). Therefore, if you have defined any
  26. environment variables that override default optimizations, such as CFLAGS and
  27. CXXFLAGS, we recommend un-setting them when building Glibc.</para>
  28. <para>Basically, compiling Glibc in any other way than the book suggests
  29. is putting the stability of your system at risk.</para>
  30. <para>The Glibc documentation recommends building Glibc outside of the source
  31. directory in a dedicated build directory:</para>
  32. <screen><userinput>mkdir ../glibc-build
  33. cd ../glibc-build</userinput></screen>
  34. <para>Next, prepare Glibc for compilation:</para>
  35. <screen><userinput>../glibc-&glibc-version;/configure --prefix=/tools \
  36. --disable-profile --enable-add-ons \
  37. --enable-kernel=2.6.0 --with-binutils=/tools/bin \
  38. --without-gd --without-cvs --with-headers=/tools/include</userinput></screen>
  39. <para>The meaning of the configure options:</para>
  40. <variablelist>
  41. <varlistentry>
  42. <term><parameter>--disable-profile</parameter></term>
  43. <listitem><para>This builds the
  44. libraries without profiling information. Omit this option if you plan to do
  45. profiling on the temporary tools.</para></listitem>
  46. </varlistentry>
  47. <varlistentry>
  48. <term><parameter>--enable-add-ons=nptl</parameter></term>
  49. <listitem><para>This tells Glibc to use the NPTL add-on as its threading
  50. library.</para></listitem>
  51. </varlistentry>
  52. <varlistentry>
  53. <term><parameter>--with-tls</parameter></term>
  54. <listitem><para>This tells Glibc to include support for TLS (thread-local storage).
  55. This is required for NPTL to work. </para></listitem>
  56. </varlistentry>
  57. <varlistentry>
  58. <term><parameter>--with-__thread</parameter></term>
  59. <listitem><para>This tells Glibc to include thread support, this is for proper
  60. compiling of the thread-local storage.</para></listitem>
  61. </varlistentry>
  62. <varlistentry>
  63. <term><parameter>--enable-kernel=2.6.0</parameter></term>
  64. <listitem><para>This tells Glibc to compile the library for support of
  65. linux 2.6.x kernels.
  66. </para></listitem>
  67. </varlistentry>
  68. <varlistentry>
  69. <term><parameter>--with-binutils=/tools/bin</parameter></term>
  70. <listitem><para>Strictly speaking this switch is not required. But it does ensure
  71. nothing can go wrong with regard to what Binutils programs get used during the
  72. Glibc build.</para></listitem>
  73. </varlistentry>
  74. <varlistentry>
  75. <term><parameter>--without-gd</parameter></term>
  76. <listitem><para>This prevents the build of the <command>memusagestat</command>
  77. program, which strangely enough insists on linking against the host's libraries
  78. (libgd, libpng, libz, and so forth). </para></listitem>
  79. </varlistentry>
  80. <varlistentry>
  81. <term><parameter>--without-cvs</parameter></term>
  82. <listitem><para>This is meant to prevent
  83. the Makefiles from attempting automatic CVS checkouts when using a CVS
  84. snapshot. But it's not actually needed these days. We use it because it
  85. suppresses an annoying but harmless warning about a missing
  86. <command>autoconf</command> program.</para></listitem>
  87. </varlistentry>
  88. <varlistentry>
  89. <term><parameter>--with-headers=/tools/include</parameter></term>
  90. <listitem><para>This forces glibc to use the linux-libc-headers installed
  91. in /tools/etc, rather than those on the host, which may be too old to
  92. support needed functionality.</para></listitem>
  93. </varlistentry>
  94. </variablelist>
  95. <para>During this stage you might see the following warning:</para>
  96. <blockquote><screen><computeroutput>configure: WARNING:
  97. *** These auxiliary programs are missing or incompatible versions: msgfmt
  98. *** some features will be disabled.
  99. *** Check the INSTALL file for required versions.</computeroutput></screen></blockquote>
  100. <para>The missing or incompatible <command>msgfmt</command> program is
  101. generally harmless, but it's believed it can sometimes cause problems when
  102. running the test suite.</para>
  103. <para>Compile the package:</para>
  104. <screen><userinput>make</userinput></screen>
  105. <para>Compilation is now complete. As mentioned earlier, running the test suites
  106. for the temporary tools installed in this chapter is not mandatory. If you want
  107. to run the Glibc test suite though, the following command will do so:</para>
  108. <screen><userinput>make check</userinput></screen>
  109. <para>For a discussion of test failures that are of particular
  110. importance, please see <xref linkend="ch-system-glibc"/>.</para>
  111. <para>In this chapter, some tests can be adversely affected by existing tools or
  112. environmental issues on the host system. In short, don't worry too much if you
  113. see Glibc test suite failures in this chapter. The Glibc in
  114. <xref linkend="chapter-building-system"/> is the one we'll ultimately end up
  115. using, so that is the one we would really like to see pass the tests (but even
  116. there some failures could still occur -- the <emphasis>math</emphasis> tests,
  117. for example).</para>
  118. <para>When experiencing a failure, make a note of it, then continue by reissuing
  119. the <command>make check</command>. The test suite should pick up where it left
  120. off and continue. You can circumvent this stop-start sequence by issuing a
  121. <command>make -k check</command>. If you do that though, be sure to log the
  122. output so that you can later peruse the log file and examine the total number of
  123. failures.</para>
  124. <para>Though it is a harmless message, the install stage of Glibc will at the
  125. end complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
  126. Prevent this confusing little warning with:</para>
  127. <screen><userinput>mkdir /tools/etc
  128. touch /tools/etc/ld.so.conf</userinput></screen>
  129. <para>Now install the package:</para>
  130. <screen><userinput>make install</userinput></screen>
  131. <para>Different countries and cultures have varying conventions for how to
  132. communicate. These conventions range from very simple ones, such as the format
  133. for representing dates and times, to very complex ones, such as the language
  134. spoken. The <quote>internationalization</quote> of GNU programs works by means
  135. of <emphasis>locales</emphasis>.</para>
  136. <note><para>If you are not running the test suites here in this chapter as per
  137. our recommendation, there is little point in installing the locales now. We'll
  138. be installing the locales in the next chapter.</para></note>
  139. <para>If you still want to install the Glibc locales anyway, the following
  140. command will do so:</para>
  141. <screen><userinput>make localedata/install-locales</userinput></screen>
  142. <para>An alternative to running the previous command is to install only those
  143. locales which you need or want. This can be achieved by using the
  144. <command>localedef</command> command. Information on this can be found in
  145. the <filename>INSTALL</filename> file in the Glibc source. However, there are
  146. a number of locales that are essential for the tests of future packages to
  147. pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
  148. following instructions, instead of the install-locales target above, will
  149. install the minimum set of locales necessary for the tests to run
  150. successfully:</para>
  151. <screen><userinput>mkdir -p /tools/lib/locale
  152. localedef -i de_DE -f ISO-8859-1 de_DE
  153. localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
  154. localedef -i en_HK -f ISO-8859-1 en_HK
  155. localedef -i en_PH -f ISO-8859-1 en_PH
  156. localedef -i en_US -f ISO-8859-1 en_US
  157. localedef -i es_MX -f ISO-8859-1 es_MX
  158. localedef -i fa_IR -f UTF-8 fa_IR
  159. localedef -i fr_FR -f ISO-8859-1 fr_FR
  160. localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
  161. localedef -i it_IT -f ISO-8859-1 it_IT
  162. localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
  163. </sect2>
  164. <sect2 role="content"><title/>
  165. <para>The details on this package are found in <xref linkend="contents-glibc"/>.</para>
  166. </sect2>
  167. </sect1>