glibc.xml 8.2 KB

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