mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-25 02:49:05 +08:00
fc7f0a806c
2002-07-02 Phil Edwards <pme@gcc.gnu.org> * docs/html/configopts.html, docs/html/install.html: Tweaks. * include/ext/algorithm, include/ext/hash_map, include/ext/hash_set, include/ext/iterator, include/ext/numeric, include/ext/rb_tree, include/ext/slist, include/ext/stl_rope.h: Add doxygen hooks. From-SVN: r55172
334 lines
13 KiB
HTML
334 lines
13 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
|
<html>
|
|
<head>
|
|
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)">
|
|
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++">
|
|
<meta name="DESCRIPTION" content="README for the GNU libstdc++ effort.">
|
|
<meta name="GENERATOR" content="vi and eight fingers">
|
|
<title>libstdc++-v3 Installation Instructions</title>
|
|
<link rel="StyleSheet" href="lib3styles.css">
|
|
</head>
|
|
<body>
|
|
|
|
<h1 class="centered"><a name="top">libstdc++-v3 INSTALL</a></h1>
|
|
|
|
<p>The latest version of this document is always available at
|
|
<a href="http://gcc.gnu.org/onlinedocs/libstdc++/install.html">
|
|
http://gcc.gnu.org/onlinedocs/libstdc++/install.html</a>.
|
|
</p>
|
|
|
|
<p>To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>.
|
|
|
|
|
|
<!-- ####################################################### -->
|
|
<hr>
|
|
<h2>Contents</h2>
|
|
<ul>
|
|
<li><a href="#prereqs">Tools you will need beforehand</a>
|
|
<li><a href="#srcsetup">Setting up the source directories</a>
|
|
<li><a href="#config">Configuring</a>
|
|
<li><a href="#install">Building and installing the library</a>
|
|
<li><a href="#postinstall">Post-installation</a>
|
|
<li><a href="#usage">Using the library</a>
|
|
</ul>
|
|
|
|
<hr>
|
|
|
|
<!-- ####################################################### -->
|
|
|
|
<h2><a name="prereqs">Tools you will need beforehand</a></h2>
|
|
<p>You will need a recent version of g++ to compile the snapshot of
|
|
libstdc++, such as one of the GCC 3.x snapshots (insert standard
|
|
caveat about using snapshots rather than formal releases). You will
|
|
need the full source distribution to whatever compiler release you are
|
|
using. The GCC snapshots can be had from one of the sites on their
|
|
<a href="http://gcc.gnu.org/mirrors.html">mirror list</a>. If you are
|
|
using a 2.x compiler, see
|
|
<a href="http://gcc.gnu.org/libstdc++/status.html">the status page</a>
|
|
first.
|
|
</p>
|
|
|
|
<p>In addition, if you plan to modify the makefiles or regenerate the
|
|
configure scripts you'll need recent versions of the GNU Autotools:
|
|
autoconf (version 2.50 or later),
|
|
automake (version 1.4 or later), <!-- special version? -->
|
|
and libtool (multilanguage, version 1.4 or later), <!-- really? -->
|
|
in order to rebuild the files.
|
|
These tools are all required to be installed in the same location
|
|
(most linux distributions install these tools by default, so no
|
|
worries as long as the versions are correct).
|
|
</p>
|
|
|
|
<p>To test your build, you will need either DejaGNU 1.4 (to run
|
|
<code>'make check'</code> like
|
|
<a href="http://gcc.gnu.org/install/test.html">the rest of GCC</a>),
|
|
or Bash 2.x (to run <code>'make check-script'</code>).
|
|
</p>
|
|
|
|
<p>As of June 19, 2000, libstdc++ attempts to use tricky and
|
|
space-saving features of the GNU toolchain, enabled with
|
|
<code>-ffunction-sections -fdata-sections
|
|
-Wl,--gc-sections</code>. To obtain maximum benefit from this,
|
|
binutils after this date should also be used (bugs were fixed
|
|
with C++ exception handling related to this change in
|
|
libstdc++-v3). The version of these tools should be
|
|
<code>2.10.90</code>, or later, and you can get snapshots (as
|
|
well as releases) of binutils
|
|
<a href="ftp://sources.redhat.com/pub/binutils">here</a>. The
|
|
configure process will automatically detect and use these
|
|
features if the underlying support is present.
|
|
</p>
|
|
|
|
<p>If you are using a 3.1-series libstdc++ snapshot, then the
|
|
requirements are slightly more stringent: the compiler sources
|
|
must also be 3.1 or later (for both technical and licensing
|
|
reasons), and your binutils must be 2.11.95 or later if you want
|
|
to use symbol versioning in shared libraries. Again, the
|
|
configure process will automatically detect and use these
|
|
features if the underlying support is present.
|
|
</p>
|
|
|
|
<p>Finally, a few system-specific requirements:
|
|
<dl>
|
|
<dt> linux
|
|
|
|
<dd>If you are using gcc 3.1 or later on linux, and are using
|
|
the gnu locale model (enabled by default for sufficient
|
|
versions of glibc), the following locales are used and tested
|
|
in the libstdc++ testsuites: en_HK, en_US, fr_FR, fr_FR@euro,
|
|
de_DE, de_DE@euro, ja_JP.eucjp, and it_IT. Failure to have the
|
|
underlying "C" library locale information installed will mean
|
|
that C++ named locales for the above regions will not work:
|
|
because of this, the libstdc++ testsuite will not pass the
|
|
named locale tests. If this isn't an issue, don't worry about
|
|
it. If named locales are needed, the underlying locale
|
|
information must be installed. Note that rebuilding libstdc++
|
|
after locales are installed is not necessary.
|
|
|
|
<p> To install
|
|
support for locales, do only one of the following: </p>
|
|
<p>
|
|
<li> install all locales
|
|
<p> <code> export LC_ALL=C </code> </p>
|
|
<p> <code> rpm -e glibc-common --nodeps </code> </p>
|
|
<p> <code> rpm -i --define "_install_langs all"
|
|
glibc-common-2.2.5-34.i386.rpm </code> </p>
|
|
</li>
|
|
<li> install just the necessary locales
|
|
<p> <code> localedef -i de_DE -f ISO-8859-1 de_DE </code> </p>
|
|
</li>
|
|
</p>
|
|
</dd>
|
|
</dt>
|
|
</dl>
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h2><a name="srcsetup">Setting up the source directories</a></h2>
|
|
<p>The following definitions will be used throughout the rest of this
|
|
document:
|
|
<ul>
|
|
<li><em>gccsrcdir</em>: The directory holding the source of the
|
|
compiler. It should have several subdirectories like
|
|
<em>gccsrcdir</em>/libiberty and <em>gccsrcdir</em>/gcc.
|
|
<li><em>libsrcdir</em>: The directory holding the source of the
|
|
C++ library.
|
|
<li><em>gccbuilddir</em>: The build directory for the compiler
|
|
in <em>gccsrcdir</em>. GCC requires that it be built in
|
|
a different directory than its sources.
|
|
<li><em>libbuilddir</em>: The build directory for libstdc++.
|
|
<li><em>destdir</em>: The eventual installation directory for
|
|
the compiler/libraries, set with the --prefix option to
|
|
the configure script.
|
|
</ul>
|
|
Note:
|
|
<ol>
|
|
<li>The 3.0 version and following are intended to replace the
|
|
library that comes with the compiler, so <em>libsrcdir</em>
|
|
and <em>libbuilddir</em> must be contained under
|
|
<em>gccsrcdir</em> and <em>gccbuilddir</em>, respectively.
|
|
<li>The source, build, and installation directories should
|
|
not be parents of one another; i.e., these should all be
|
|
separate directories. Please don't build out of the
|
|
source directory.
|
|
</ol>
|
|
</p>
|
|
|
|
<p>Check out or download the GCC sources: the resulting source directory
|
|
(<code>gcc</code> or <code>gcc-3.0.3</code>, for example) is
|
|
<em>gccsrcdir</em>.
|
|
Once in <em>gccsrcdir</em>, you'll need to rename or delete the
|
|
libstdc++-v3 directory which comes with that snapshot:
|
|
<pre>
|
|
mv libstdc++-v3 libstdc++-v3-previous <strong>[OR]</strong>
|
|
rm -r libstdc++-v3</pre>
|
|
</p>
|
|
<p>Next, unpack the libstdc++-v3 library tarball into this
|
|
<em>gccsrcdir</em> directory; it will create a
|
|
<em>libsrcdir</em> called <code>libstdc++-<em>version</em></code>:
|
|
<pre>
|
|
gzip -dc libstdc++-version.tar.gz | tar xf -</pre>
|
|
</p>
|
|
<p>Finally, rename <em>libsrcdir</em> to <code>libstdc++-v3</code> so that
|
|
gcc's configure flags will be able to deal with the new library.
|
|
<pre>
|
|
mv <em>libsrcdir</em> libstdc++-v3</pre>
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<h2><a name="config">Configuring</a></h2>
|
|
<p>If you have never done this before, you should read the basic
|
|
<a href="http://gcc.gnu.org/install/">GCC Installation
|
|
Instructions</a> first. Read <em>all of them</em>.
|
|
<strong>Twice.</strong>
|
|
</p>
|
|
<p>When building libstdc++-v3 you'll have to configure
|
|
the entire <em>gccsrcdir</em> directory. The full list of libstdc++-v3
|
|
specific configuration options, not dependent on the specific compiler
|
|
release being used, can be found <a href="configopts.html">here</a>.
|
|
</p>
|
|
<p>Consider possibly using --enable-languages=c++ to save time by only
|
|
building the C++ language parts.
|
|
</p>
|
|
|
|
<p><pre>
|
|
cd <em>gccbuilddir</em>
|
|
<em>gccsrcdir</em>/configure --prefix=<em>destdir</em> --other-opts...</pre>
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<h2><a name="install">Building and installing the library</a></h2>
|
|
<p>Now you have a few options:</p>
|
|
<h3>[re]building <em>everything</em></h3>
|
|
<p>If you're building GCC from scratch, you can do the usual
|
|
<code> 'make bootstrap' </code> here, and libstdc++-v3 will be built
|
|
as its default C++ library. The generated g++ will magically
|
|
use the correct headers, link against the correct library
|
|
binary, and in general using libstdc++-v3 will be a piece of
|
|
cake. You're done; run <code>'make install'</code> (see the GCC
|
|
installation instructions) to put the new compiler and libraries
|
|
into place.
|
|
</p>
|
|
|
|
<h3>[re]building only libstdc++</h3>
|
|
<p>To rebuild just libstdc++, use:
|
|
<pre>
|
|
make all-target-libstdc++-v3</pre>
|
|
This will configure and build the C++ library in the
|
|
<em>gccbuilddir/cpu-vendor-os/</em>libstdc++ directory.
|
|
</p>
|
|
<p>If you are rebuilding from a previous build [attempt], some
|
|
information is kept in a cache file. This is stored in
|
|
<em>gccbuilddir/cpu-vendor-os/</em> if you are building with
|
|
multilibs (the default), or in
|
|
<em>gccbuilddir/cpu-vendor-os/</em>libstdc++-v3 if you have
|
|
multilibs disabled. The filename is config.cache; if previous
|
|
information is causing problems, you can delete it entirely, or
|
|
simply edit it and remove lines.
|
|
</p>
|
|
<p>You're done. Now install the rebuilt pieces with
|
|
<pre>
|
|
make install</pre>
|
|
or
|
|
<pre>
|
|
make install-gcc
|
|
make install-target-libstdc++-v3</pre>
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<h2><a name="postinstall">Post-installation</a></h2>
|
|
<p>Installation will create the <em>destdir</em> directory and
|
|
populate it with subdirectories:
|
|
<pre>
|
|
lib/
|
|
include/g++-v3/
|
|
backward/
|
|
bits/
|
|
<em>cpu-vendor-os</em>/bits/
|
|
ext/</pre>
|
|
</p>
|
|
<p>If you used the version-specific-libs configure option, then most of
|
|
the headers and library files will be moved under
|
|
<code>lib/gcc-lib/</code> instead.
|
|
</p>
|
|
<p>You can check the status of the build without installing it using
|
|
<pre>
|
|
make check</pre>
|
|
or you can check the status of the installed library using
|
|
<pre>
|
|
make check-install</pre>
|
|
in the <em>libbuilddir</em> directory.
|
|
These commands will create a 'testsuite' directory underneath
|
|
<em>libbuilddir</em> containing the results of the tests. We are
|
|
interested in any strange failures of the testsuite; please see
|
|
<a href="faq/index.html#2_4">FAQ 2.4</a> for which files to examine.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<h2><a name="usage">Using the library</a></h2>
|
|
<li><B>Find the new library at runtime (shared linking only)</B>
|
|
<p>If you only built a static library (libstdc++.a), or if you
|
|
specified static linking, you don't have to worry about this.
|
|
But if you built a shared library (libstdc++.so) and linked
|
|
against it, then you will need to find that library when you
|
|
run the executable.
|
|
</p>
|
|
<p>Methods vary for different platforms and different styles, but
|
|
the usual ones are printed to the screen during installation.
|
|
They include:
|
|
<ul>
|
|
<li>At runtime set LD_LIBRARY_PATH in your environment correctly,
|
|
so that the shared library for libstdc++ can be found and
|
|
loaded. Be certain that you understand all of the other
|
|
implications and behavior of LD_LIBRARY_PATH first (few
|
|
people do, and they get into trouble).
|
|
<li>Compile the path to find the library at runtime into the
|
|
program. This can be done by passing certain options to g++,
|
|
which will in turn pass them on to the linker. The exact
|
|
format of the options is dependent on which linker you use:
|
|
<ul>
|
|
<li>GNU ld (default on Linux):<code> -Wl,--rpath,<em>destdir</em>/lib</code>
|
|
<li>IRIX ld:<code> -Wl,-rpath,<em>destdir</em>/lib</code>
|
|
<li>Solaris ld:<code> -Wl,-R<em>destdir</em>/lib</code>
|
|
<li>More...? Let us know!
|
|
</ul>
|
|
</ul>
|
|
</p>
|
|
<p>Use the <code>ldd(1)</code> utility to show which library the system
|
|
thinks it will get at runtime.
|
|
</p>
|
|
<p>A libstdc++.la file is also installed, for use with Libtool. If
|
|
you use Libtool to create your executables, these details are
|
|
taken care of for you.
|
|
</p>
|
|
</ol>
|
|
</p>
|
|
|
|
|
|
<!--
|
|
<hr>
|
|
<h2><a name=""></a></h2>
|
|
<p>
|
|
</p>
|
|
|
|
-->
|
|
|
|
<!-- ####################################################### -->
|
|
|
|
<hr>
|
|
<p class="fineprint"><em>
|
|
See <a href="17_intro/license.html">license.html</a> for copying conditions.
|
|
Comments and suggestions are welcome, and may be sent to
|
|
<a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing list</a>.
|
|
</em></p>
|
|
|
|
|
|
</body>
|
|
</html>
|
|
|