glibc.xml 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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</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. </variablelist>
  89. <para>During this stage you might see the following warning:</para>
  90. <blockquote><screen><computeroutput>configure: WARNING:
  91. *** These auxiliary programs are missing or incompatible versions: msgfmt
  92. *** some features will be disabled.
  93. *** Check the INSTALL file for required versions.</computeroutput></screen></blockquote>
  94. <para>The missing or incompatible <command>msgfmt</command> program is
  95. generally harmless, but it's believed it can sometimes cause problems when
  96. running the test suite.</para>
  97. <para>Compile the package:</para>
  98. <screen><userinput>make</userinput></screen>
  99. <para>Compilation is now complete. As mentioned earlier, running the test suites
  100. for the temporary tools installed in this chapter is not mandatory. If you want
  101. to run the Glibc test suite though, the following command will do so:</para>
  102. <screen><userinput>make check</userinput></screen>
  103. <para>For a discussion of test failures that are of particular
  104. importance, please see <xref linkend="ch-system-glibc"/>.</para>
  105. <para>In this chapter, some tests can be adversely affected by existing tools or
  106. environmental issues on the host system. In short, don't worry too much if you
  107. see Glibc test suite failures in this chapter. The Glibc in
  108. <xref linkend="chapter-building-system"/> is the one we'll ultimately end up
  109. using, so that is the one we would really like to see pass the tests (but even
  110. there some failures could still occur -- the <emphasis>math</emphasis> tests,
  111. for example).</para>
  112. <para>When experiencing a failure, make a note of it, then continue by reissuing
  113. the <command>make check</command>. The test suite should pick up where it left
  114. off and continue. You can circumvent this stop-start sequence by issuing a
  115. <command>make -k check</command>. If you do that though, be sure to log the
  116. output so that you can later peruse the log file and examine the total number of
  117. failures.</para>
  118. <para>Though it is a harmless message, the install stage of Glibc will at the
  119. end complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
  120. Prevent this confusing little warning with:</para>
  121. <screen><userinput>mkdir /tools/etc
  122. touch /tools/etc/ld.so.conf</userinput></screen>
  123. <para>Now install the package:</para>
  124. <screen><userinput>make install</userinput></screen>
  125. <para>Different countries and cultures have varying conventions for how to
  126. communicate. These conventions range from very simple ones, such as the format
  127. for representing dates and times, to very complex ones, such as the language
  128. spoken. The <quote>internationalization</quote> of GNU programs works by means
  129. of <emphasis>locales</emphasis>.</para>
  130. <note><para>If you are not running the test suites here in this chapter as per
  131. our recommendation, there is little point in installing the locales now. We'll
  132. be installing the locales in the next chapter.</para></note>
  133. <para>If you still want to install the Glibc locales anyway, the following
  134. command will do so:</para>
  135. <screen><userinput>make localedata/install-locales</userinput></screen>
  136. <para>An alternative to running the previous command is to install only those
  137. locales which you need or want. This can be achieved by using the
  138. <command>localedef</command> command. Information on this can be found in
  139. the <filename>INSTALL</filename> file in the Glibc source. However, there are
  140. a number of locales that are essential for the tests of future packages to
  141. pass, in particular, the <emphasis>libstdc++</emphasis> tests from GCC. The
  142. following instructions, instead of the install-locales target above, will
  143. install the minimum set of locales necessary for the tests to run
  144. successfully:</para>
  145. <screen><userinput>mkdir -p /tools/lib/locale
  146. localedef -i de_DE -f ISO-8859-1 de_DE
  147. localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
  148. localedef -i en_HK -f ISO-8859-1 en_HK
  149. localedef -i en_PH -f ISO-8859-1 en_PH
  150. localedef -i en_US -f ISO-8859-1 en_US
  151. localedef -i es_MX -f ISO-8859-1 es_MX
  152. localedef -i fa_IR -f UTF-8 fa_IR
  153. localedef -i fr_FR -f ISO-8859-1 fr_FR
  154. localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
  155. localedef -i it_IT -f ISO-8859-1 it_IT
  156. localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
  157. </sect2>
  158. <sect2 role="content"><title/>
  159. <para>The details on this package are found in <xref linkend="contents-glibc"/>.</para>
  160. </sect2>
  161. </sect1>