glibc.xml 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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</parameter></term>
  49. <listitem><para>This tells Glibc to use the add-on' that it can use like NPTL
  50. as its threading library.</para></listitem>
  51. </varlistentry>
  52. <varlistentry>
  53. <term><parameter>--enable-kernel=2.6.0</parameter></term>
  54. <listitem><para>This tells Glibc to compile the library for support of
  55. linux 2.6.x kernels.
  56. </para></listitem>
  57. </varlistentry>
  58. <varlistentry>
  59. <term><parameter>--with-binutils=/tools/bin</parameter></term>
  60. <listitem><para>Strictly speaking this switch is not required. But it does ensure
  61. nothing can go wrong with regard to what Binutils programs get used during the
  62. Glibc build.</para></listitem>
  63. </varlistentry>
  64. <varlistentry>
  65. <term><parameter>--without-gd</parameter></term>
  66. <listitem><para>This prevents the build of the <command>memusagestat</command>
  67. program, which strangely enough insists on linking against the host's libraries
  68. (libgd, libpng, libz, and so forth). </para></listitem>
  69. </varlistentry>
  70. <varlistentry>
  71. <term><parameter>--without-cvs</parameter></term>
  72. <listitem><para>This is meant to prevent
  73. the Makefiles from attempting automatic CVS checkouts when using a CVS
  74. snapshot. But it's not actually needed these days. We use it because it
  75. suppresses an annoying but harmless warning about a missing
  76. <command>autoconf</command> program.</para></listitem>
  77. </varlistentry>
  78. <varlistentry>
  79. <term><parameter>--with-headers=/tools/include</parameter></term>
  80. <listitem><para>This forces glibc to use the linux-libc-headers installed
  81. in /tools/include, rather than those on the host, which may be too old to
  82. support needed functionality.</para></listitem>
  83. </varlistentry>
  84. </variablelist>
  85. <para>During this stage you might see the following warning:</para>
  86. <blockquote><screen><computeroutput>configure: WARNING:
  87. *** These auxiliary programs are missing or incompatible versions: msgfmt
  88. *** some features will be disabled.
  89. *** Check the INSTALL file for required versions.</computeroutput></screen></blockquote>
  90. <para>The missing or incompatible <command>msgfmt</command> program is
  91. generally harmless, but it's believed it can sometimes cause problems when
  92. running the test suite.</para>
  93. <para>Compile the package:</para>
  94. <screen><userinput>make</userinput></screen>
  95. <para>Compilation is now complete. As mentioned earlier, running the test suites
  96. for the temporary tools installed in this chapter is not mandatory. If you want
  97. to run the Glibc test suite though, the following command will do so:</para>
  98. <screen><userinput>make check</userinput></screen>
  99. <para>For a discussion of test failures that are of particular
  100. importance, please see <xref linkend="ch-system-glibc"/>.</para>
  101. <para>In this chapter, some tests can be adversely affected by existing tools or
  102. environmental issues on the host system. In short, don't worry too much if you
  103. see Glibc test suite failures in this chapter. The Glibc in
  104. <xref linkend="chapter-building-system"/> is the one we'll ultimately end up
  105. using, so that is the one we would really like to see pass the tests (but even
  106. there some failures could still occur -- the <emphasis>math</emphasis> tests,
  107. for example).</para>
  108. <para>When experiencing a failure, make a note of it, then continue by reissuing
  109. the <command>make check</command>. The test suite should pick up where it left
  110. off and continue. You can circumvent this stop-start sequence by issuing a
  111. <command>make -k check</command>. If you do that though, be sure to log the
  112. output so that you can later peruse the log file and examine the total number of
  113. failures.</para>
  114. <para>Though it is a harmless message, the install stage of Glibc will at the
  115. end complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
  116. Prevent this confusing little warning with:</para>
  117. <screen><userinput>mkdir /tools/etc
  118. touch /tools/etc/ld.so.conf</userinput></screen>
  119. <para>Now install the package:</para>
  120. <screen><userinput>make install</userinput></screen>
  121. <para>Different countries and cultures have varying conventions for how to
  122. communicate. These conventions range from very simple ones, such as the format
  123. for representing dates and times, to very complex ones, such as the language
  124. spoken. The <quote>internationalization</quote> of GNU programs works by means
  125. of <emphasis>locales</emphasis>.</para>
  126. <note><para>If you are not running the test suites here in this chapter as per
  127. our recommendation, there is little point in installing the locales now. We'll
  128. be installing the locales in the next chapter.</para></note>
  129. <para>If you still want to install the Glibc locales anyway, the following
  130. command will do so:</para>
  131. <screen><userinput>make localedata/install-locales</userinput></screen>
  132. <para>An alternative to running the previous command is to install only those
  133. locales which you need or want. This can be achieved by using the
  134. <command>localedef</command> command. Information on this can be found in
  135. the <filename>INSTALL</filename> file in the Glibc source. However, there are
  136. a number of locales that are essential for the tests of future packages to
  137. pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
  138. following instructions, instead of the install-locales target above, will
  139. install the minimum set of locales necessary for the tests to run
  140. successfully:</para>
  141. <screen><userinput>mkdir -p /tools/lib/locale
  142. localedef -i de_DE -f ISO-8859-1 de_DE
  143. localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
  144. localedef -i en_HK -f ISO-8859-1 en_HK
  145. localedef -i en_PH -f ISO-8859-1 en_PH
  146. localedef -i en_US -f ISO-8859-1 en_US
  147. localedef -i es_MX -f ISO-8859-1 es_MX
  148. localedef -i fa_IR -f UTF-8 fa_IR
  149. localedef -i fr_FR -f ISO-8859-1 fr_FR
  150. localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
  151. localedef -i it_IT -f ISO-8859-1 it_IT
  152. localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
  153. </sect2>
  154. <sect2 role="content"><title/>
  155. <para>The details on this package are found in <xref linkend="contents-glibc"/>.</para>
  156. </sect2>
  157. </sect1>