<section xmlns="http://docbook.org/ns/docbook" version="5.0" 
	 xml:id="manual.intro.setup.prereq" xreflabel="Prerequisites">
<?dbhtml filename="prerequisites.html"?>

<info><title>Prerequisites</title>
  <keywordset>
    <keyword>
      ISO C++
    </keyword>
    <keyword>
      Prerequisites
    </keyword>
  </keywordset>
</info>



<para>
  Because libstdc++ is part of GCC, the primary source for
   installation instructions is
   <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">the GCC install page</link>.
   In particular, list of prerequisite software needed to build the library
   <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">
   starts with those requirements.</link> The same pages also list
   the tools you will need if you wish to modify the source.
</para>

  <para>
   Additional data is given here only where it applies to libstdc++.
  </para>

   <para>As of GCC 4.0.1 the minimum version of binutils required to build
      libstdc++ is <code>2.15.90.0.1.1</code>. You can get snapshots
      (as well as releases) of binutils from
      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ftp://sources.redhat.com/pub/binutils/">
      ftp://sources.redhat.com/pub/binutils</link>.
      Older releases of libstdc++ do not require such a recent version,
      but to take full advantage of useful space-saving features and
      bug-fixes you should use a recent binutils whenever possible.
      The configure process will automatically detect and use these
      features if the underlying support is present.
   </para>

   <para>
     To generate the API documentation from the sources you will need
     Doxygen, see <link linkend="appendix.porting.doc">Documentation
     Hacking</link> in the appendix for full details.
   </para>

   <para>
   Finally, a few system-specific requirements:
   </para>

   <variablelist>
      <varlistentry>
	<term>linux</term>

	<listitem>
	<para>
	  If gcc 3.1.0 or later on is being used on linux, an attempt
	  will be made to use "C" library functionality necessary for
	  C++ named locale support.  For gcc 4.6.0 and later, this
	  means that glibc 2.3 or later is required.
	</para>

	<para>
	  If the 'gnu' locale model is being used, the following
	  locales are used and tested in the libstdc++ testsuites.
	  The first column is the name of the locale, the second is
	  the character set it is expected to use.
	</para>
<programlisting>
de_DE               ISO-8859-1
de_DE@euro          ISO-8859-15
en_GB               ISO-8859-1
en_HK               ISO-8859-1
en_PH               ISO-8859-1
en_US               ISO-8859-1
en_US.ISO-8859-1    ISO-8859-1
en_US.ISO-8859-15   ISO-8859-15
en_US.UTF-8         UTF-8
es_ES               ISO-8859-1
es_MX               ISO-8859-1
fr_FR               ISO-8859-1
fr_FR@euro          ISO-8859-15
is_IS               UTF-8
it_IT               ISO-8859-1
ja_JP.eucjp         EUC-JP
ru_RU.ISO-8859-5    ISO-8859-5
ru_RU.UTF-8         UTF-8
se_NO.UTF-8         UTF-8
ta_IN               UTF-8
zh_TW               BIG5
</programlisting>

      <para>Failure to have installed the underlying "C" library
      locale information for any of the above regions means that
      the corresponding C++ named locale will not work:  because of
      this, the libstdc++ testsuite will skip named locale tests
      which need missing information.  If this isn't an issue, don't
      worry about it.  If a named locale is needed, the underlying
      locale information must be installed.  Note that rebuilding
      libstdc++ after "C" locales are installed is not necessary.
      </para>

      <para>
	To install support for locales, do only one of the following:
      </para>

      <itemizedlist>
	<listitem>
	  <para>install all locales</para>
	  <itemizedlist>
	    <listitem>
	      <para>with RedHat Linux:
	      </para>
	      <para> <code> export LC_ALL=C </code>
	      </para>
	      <para> <code> rpm -e glibc-common --nodeps </code>
	      </para>
	      <para>
		<code> rpm -i --define "_install_langs all"
		 glibc-common-2.2.5-34.i386.rpm
		</code>
	      </para>
	    </listitem>
	     <listitem>
	     <para>
	       Instructions for other operating systems solicited.
	     </para>
	     </listitem>
	  </itemizedlist>
	</listitem>
	<listitem>
	  <para>install just the necessary locales</para>
	  <itemizedlist>
	    <listitem>
	      <para>with Debian Linux:</para>
	      <para> Add the above list, as shown, to the file
	      <code>/etc/locale.gen</code> </para>
	      <para> run <code>/usr/sbin/locale-gen</code> </para>
	    </listitem>
	    <listitem>
	      <para>on most Unix-like operating systems:</para>
	      <para><code> localedef -i de_DE -f ISO-8859-1 de_DE </code></para>
	      <para>(repeat for each entry in the above list) </para>
	    </listitem>
	    <listitem>
	    <para>
	       Instructions for other operating systems solicited.
	    </para>
	    </listitem>
	  </itemizedlist>
	</listitem>
      </itemizedlist>
      </listitem>
      </varlistentry>
   </variablelist>

</section>
