footer.html: Update to see if it takes effect.
2000-05-03 Phil Edwards <pme@sourceware.cygnus.com> Felix Natter <fnatter@gmx.net> * docs/footer.html: Update to see if it takes effect. * docs/thanks.html: More people. * docs/17_intro/headers_cc.txt: Copy from testsuite, since that can't be seen from the web pages. Rename for browser-friendliness... * docs/17_intro/howto.html: ...and update here. * docs/17_intro/porting-howto.html: Changes from Felix. * docs/gccrebuild.html: Mention v3->egcs move. * docs/faq/index.html: Ditto. Also misc tweaks and URL updates. * docs/faq/index.txt: Regenerate. Co-Authored-By: Felix Natter <fnatter@gmx.net> From-SVN: r33631
This commit is contained in:
parent
1920de4701
commit
754ac8f7b2
9 changed files with 342 additions and 160 deletions
|
@ -1,3 +1,16 @@
|
|||
2000-05-03 Phil Edwards <pme@sourceware.cygnus.com>
|
||||
Felix Natter <fnatter@gmx.net>
|
||||
|
||||
* docs/footer.html: Update to see if it takes effect.
|
||||
* docs/thanks.html: More people.
|
||||
* docs/17_intro/headers_cc.txt: Copy from testsuite, since that can't
|
||||
be seen from the web pages. Rename for browser-friendliness...
|
||||
* docs/17_intro/howto.html: ...and update here.
|
||||
* docs/17_intro/porting-howto.html: Changes from Felix.
|
||||
* docs/gccrebuild.html: Mention v3->egcs move.
|
||||
* docs/faq/index.html: Ditto. Also misc tweaks and URL updates.
|
||||
* docs/faq/index.txt: Regenerate.
|
||||
|
||||
2000-05-01 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* config/cpu/powerpc/bits/atomicity.h (__exchange_and_add): More
|
||||
|
|
83
libstdc++-v3/docs/17_intro/headers_cc.txt
Normal file
83
libstdc++-v3/docs/17_intro/headers_cc.txt
Normal file
|
@ -0,0 +1,83 @@
|
|||
// 1999-05-12 bkoz
|
||||
|
||||
// Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// 17.4.1.2 Headers
|
||||
|
||||
|
||||
// "C++" headers
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include <complex>
|
||||
#include <deque>
|
||||
#include <exception>
|
||||
#include <fstream>
|
||||
#include <functional>
|
||||
#include <iomanip>
|
||||
#include <ios>
|
||||
#include <iosfwd>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <iterator>
|
||||
#include <limits>
|
||||
#include <list>
|
||||
#include <locale>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <new>
|
||||
#include <numeric>
|
||||
#include <ostream>
|
||||
#include <queue>
|
||||
#include <set>
|
||||
#include <sstream>
|
||||
#include <stack>
|
||||
#include <stdexcept>
|
||||
#include <streambuf>
|
||||
#include <string>
|
||||
#include <typeinfo>
|
||||
#include <utility>
|
||||
#include <valarray>
|
||||
#include <vector>
|
||||
|
||||
// "C" headers
|
||||
#include <cassert>
|
||||
#include <cctype>
|
||||
#include <cerrno>
|
||||
#include <cfloat>
|
||||
#include <ciso646>
|
||||
#include <climits>
|
||||
#include <clocale>
|
||||
#include <cmath>
|
||||
#include <csetjmp>
|
||||
#include <csignal>
|
||||
#include <cstdarg>
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
|
||||
// "C" headers that might not work if wchar_t support is disabled.
|
||||
#include <bits/c++config.h>
|
||||
#if _GLIBCPP_USE_WCHAR_T
|
||||
#include <cwchar>
|
||||
#include <cwctype>
|
||||
#endif
|
||||
|
||||
int main() { }
|
|
@ -9,7 +9,7 @@
|
|||
<TITLE>libstdc++-v3 HOWTO: Chapter 17</TITLE>
|
||||
<LINK REL="home" HREF="http://sourceware.cygnus.com/libstdc++/docs/18_support/">
|
||||
<LINK REL=StyleSheet HREF="../lib3styles.css">
|
||||
<!-- $Id: howto.html,v 1.1 2000/04/21 20:33:31 bkoz Exp $ -->
|
||||
<!-- $Id: howto.html,v 1.2 2000/04/25 06:39:48 bkoz Exp $ -->
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
|
@ -46,7 +46,7 @@
|
|||
available to you, no matter how.
|
||||
</P>
|
||||
<P>The names of the headers can be easily seen in
|
||||
<A HREF="../testsuite/17_intro/headers.cc">this source code</A>,
|
||||
<A HREF="headers_cc.txt"><TT>testsuite/17_intro/headers.cc</TT></A>,
|
||||
which is a small testbed we use to make certain that the headers
|
||||
all compile and run.
|
||||
</P>
|
||||
|
@ -147,7 +147,7 @@
|
|||
Comments and suggestions are welcome, and may be sent to
|
||||
<A HREF="mailto:pme@sourceware.cygnus.com">Phil Edwards</A> or
|
||||
<A HREF="mailto:gdr@egcs.cygnus.com">Gabriel Dos Reis</A>.
|
||||
<BR> $Id: howto.html,v 1.1 2000/04/21 20:33:31 bkoz Exp $
|
||||
<BR> $Id: howto.html,v 1.2 2000/04/25 06:39:48 bkoz Exp $
|
||||
</EM></P>
|
||||
|
||||
|
||||
|
|
|
@ -15,9 +15,18 @@
|
|||
<li><a href = "#nocreate">File-flags: <tt>ios::nocreate</tt> and
|
||||
<tt>ios::noreplace</tt></a>
|
||||
<li><a href = "#headers">The new headers</a>
|
||||
<li><a href = "#iterators">Iterator-changes</a>
|
||||
<li><a href = "#macros">Libc-macros</a>
|
||||
<li><a href = "#about">Comments, suggestions, corrections, questions...</a>
|
||||
</center>
|
||||
|
||||
<p>
|
||||
In the following, when I say portable, I will refer to "portable among ISO
|
||||
14882-implementations". On the other hand, if I say "backportable" or
|
||||
"conservative", I am talking about "compiles with older
|
||||
libstdc++-implementations".
|
||||
</p>
|
||||
|
||||
<a name = "std">
|
||||
<h2>Namespace std::</h2>
|
||||
</a>
|
||||
|
@ -25,29 +34,40 @@
|
|||
The latest C++-standard (ISO-14882) requires that the standard C++-library
|
||||
is defined in namespace std::. Thus, to use classes from the standard c++
|
||||
library, you can do one of three things:
|
||||
<ul>
|
||||
<li>wrap your code in <tt>namespace std { ... }</tt>
|
||||
=> This is not an option because only symbols from the standard c++-library are
|
||||
defined in namespace std::.
|
||||
<li>put a kind of <dfn>using-declaration</dfn> in your source
|
||||
(either <tt>using namespace std;</tt> or i.e. <tt>using std::string;</tt>)
|
||||
=> works well for source-files, but cannot be used in header-files
|
||||
<li>use a <dfn>fully qualified name</dfn> for each libstdc++-symbol
|
||||
(i.e. <tt>std::string</tt>, <tt>std::cout</tt>)
|
||||
=> can always be used
|
||||
</ul>
|
||||
<ul>
|
||||
<li>wrap your code in <tt>namespace std { ... }</tt> => This is not an
|
||||
option because only symbols from the standard c++-library are defined in
|
||||
namespace std::.
|
||||
|
||||
<li>put a kind of <dfn>using-declaration</dfn> in your source (either
|
||||
<tt>using namespace std;</tt> or i.e. <tt>using std::string;</tt>)
|
||||
=> works well for source-files, but cannot be used in header-files
|
||||
|
||||
<li>use a <dfn>fully qualified name</dfn> for each libstdc++-symbol
|
||||
(i.e. <tt>std::string</tt>, <tt>std::cout</tt>) => can always be used
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
Because there are many compilers which still use an implementation that
|
||||
does not have the standard C++-library in namespace <tt>std::</tt>, some
|
||||
care is required to support these as well.
|
||||
</p>
|
||||
<p>
|
||||
Namespace back-portability-issues are generally not a problem with g++,
|
||||
because versions of g++ that do not have libstdc++ in <tt>std::</tt> use
|
||||
<tt>-fno-honor-std</tt> (ignore <tt>std::</tt>, <tt>:: = std::</tt>) by
|
||||
default. That is, the responsibility for enabling or disabling
|
||||
<tt>std::</tt> is on the user; the maintainer does not have to care about it.
|
||||
This probably applies to some other compilers as well.
|
||||
</p>
|
||||
<p>
|
||||
Namespace portability-issues are not a problem with g++, because versions
|
||||
of g++ that do not have libstdc++ in std:: use <tt>-fno-honor-std</tt>
|
||||
(ignore <tt>std::</tt>, <tt>:: = std::</tt>) by default. This probably
|
||||
applies to some other compilers as well.
|
||||
|
||||
The following sections list some possible solutions to support compilers
|
||||
that cannot ignore std::.
|
||||
</p>
|
||||
<a name = "gtkmm">
|
||||
<h3>Using <dfn>namespace composition</dfn> if the project uses a separate
|
||||
namespace</h3>
|
||||
</a>
|
||||
|
||||
<p>
|
||||
<a href = "http://gtkmm.sourcforge.net">Gtk--</a> defines most of its
|
||||
|
@ -55,8 +75,7 @@ classes in namespace Gtk::. Thus, it was possible to adapt Gtk-- to
|
|||
namespace std:: by using a C++-feature called <dfn>namespace
|
||||
composition</dfn>. This is what happens if you put a
|
||||
<dfn>using</dfn>-declaration into a namespace-definition: the imported
|
||||
symbol(s) gets imported into the currently active namespace(s). This is
|
||||
what it looks like in Gtk--:
|
||||
symbol(s) gets imported into the currently active namespace(s). For example:
|
||||
<pre>
|
||||
namespace Gtk {
|
||||
using std::string;
|
||||
|
@ -64,16 +83,23 @@ namespace Gtk {
|
|||
}
|
||||
</pre>
|
||||
In this example, <tt>std::string</tt> gets imported into namespace Gtk::.
|
||||
The result is that you don't have to use <tt>std::string</tt> in this header,
|
||||
but still <tt>std::string</tt> does not get imported into user-space (the
|
||||
global namespace ::) unless the user does <tt>using namespace Gtk;</tt>
|
||||
(which is not recommended practice for Gtk--, so it is not a problem).
|
||||
The result is that you don't have to use <tt>std::string</tt> in this
|
||||
header, but still <tt>std::string</tt> does not get imported into
|
||||
user-space (the global namespace ::) unless the user does <tt>using
|
||||
namespace Gtk;</tt> (which is not recommended practice for Gtk--, so it is
|
||||
not a problem). Additionally, the <tt>using</tt>-declarations are wrapped
|
||||
in macros that are set based on autoconf-tests to either "" or
|
||||
i.e. <tt>using std::string;</tt> (depending on whether the system has
|
||||
libstdc++ in <tt>std::</tt> or not).
|
||||
(ideas from llewelly@dbritsch.dsl.xmission.com,
|
||||
Karl Nelson <kenelson@ece.ucdavis.edu>)
|
||||
</p>
|
||||
|
||||
<h3>Defining an empty namespace std for backwards-compatibility</h3>
|
||||
<h3>Defining an empty namespace std</h3>
|
||||
<p>
|
||||
By defining an (empty) namespace std:: before using it, you can avoid
|
||||
getting errors on systems where no part of the library is in std:
|
||||
By defining an (empty) namespace <tt>std::</tt> before using it, you can
|
||||
avoid getting errors on systems where no part of the library is in
|
||||
namespace std:
|
||||
<pre>
|
||||
namespace std { }
|
||||
using namespace std;
|
||||
|
@ -82,12 +108,12 @@ using namespace std;
|
|||
<h3>Avoid to use fully qualified names (i.e. std::string)</h3>
|
||||
<p>
|
||||
If some compilers complain about <tt>using std::string;</tt>, and if the
|
||||
hack for gtk-- mentioned above does not work, then it might be a good idea
|
||||
"hack" for gtk-- mentioned above does not work, then it might be a good idea
|
||||
to define a macro <tt>NS_STD</tt>, which is defined to either "" or "std"
|
||||
based on an autoconf-test. Then you should be able to use
|
||||
<tt>NS_STD::string</tt>, which will evaluate to <tt>::string</tt> ("string
|
||||
in the global namespace") on systems that do not put string in std::.
|
||||
(This is untested and might not even be necessary)
|
||||
(This is untested)
|
||||
</p>
|
||||
|
||||
<h3>How some open-source-projects deal with this</h3>
|
||||
|
@ -103,7 +129,7 @@ in the global namespace") on systems that do not put string in std::.
|
|||
<tr><td><a href = "http://www.mnemonic.org">mnemonic</a></td> <td>none</td>
|
||||
</tr>
|
||||
<tr><td><a href = "http://libsigc.sourceforge.net">libsigc++</a></td>
|
||||
<td>portable-impl</td>
|
||||
<td>conservative-impl</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -117,11 +143,14 @@ in the global namespace") on systems that do not put string in std::.
|
|||
<td>none</td> <td>no namespace std at all</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>portable-impl</td> <td>wrap all namespace-handling in macros to support
|
||||
compilers without namespace-support (no libstdc++ used in headers)</td>
|
||||
<td>conservative-impl</td> <td>wrap all namespace-handling in macros to
|
||||
support compilers without namespace-support (no libstdc++ used in
|
||||
headers)</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
As you can see, this currently lacks an example of a project which uses
|
||||
libstdc++-symbols in headers in a back-portable way
|
||||
(except for the <a href = "#gtkmm">Gtk-- "hack"</a>).
|
||||
</p>
|
||||
<a name = "nocreate">
|
||||
<h2>there is no ios::nocreate/ios::noreplace in ISO 14882</h2>
|
||||
|
@ -136,7 +165,8 @@ input-streams.
|
|||
For output streams, "nocreate" is probably the default, unless you specify
|
||||
<tt>std::ios::trunc</tt> ? To be safe, you can open the file for
|
||||
reading, check if it has been opened, and then decide whether you want to
|
||||
create/replace or not.
|
||||
create/replace or not. To my knowledge, even older implementations support
|
||||
<tt>app</tt>, <tt>ate</tt> and <tt>trunc</tt> (except for <tt>app</tt> ?).
|
||||
</p>
|
||||
<a name = "attach">
|
||||
<h2><tt>stream::attach(int fd)</tt> is not in the standard any more</h2>
|
||||
|
@ -166,32 +196,108 @@ headers and tell users of old compilers that they should create links
|
|||
(which is what they will have to do sometime anyway).
|
||||
</p>
|
||||
|
||||
<h3><tt><ctype.h></tt> introduces ambiguity when used with
|
||||
<tt><cctype></tt></h3>
|
||||
<p>
|
||||
The best solution I came up with so far is to include <tt>cctype</tt>
|
||||
instead of <tt>ctype.h</tt> wherever possible, and then use fully
|
||||
qualified names to refer to the libstdc++-versions: std::islower,
|
||||
std::isalnum etc. (you will need to as soon as any header includes
|
||||
<tt><ctype.h></tt>, because then there will be an ambiguity with the
|
||||
C-versions in the global namespace defined in <tt><ctype.h></tt>)
|
||||
<a name = "cheaders">
|
||||
<h3>New headers replacing C-headers</h3>
|
||||
</a>
|
||||
<p>
|
||||
You should not use the C-headers (except for system-level headers) from C++
|
||||
programs. Instead, you should use a set of headers that are named by
|
||||
prepending 'c' and, as usual, ommiting the extension (.h). For example,
|
||||
instead of using <tt><math.h></tt>, you should use
|
||||
<tt><cmath></tt>. The standard specifies that if you include the
|
||||
C-style header (<tt><math.h></tt> in this case), the symbols will be
|
||||
available both in the global namespace and in namespace <tt>std::</tt>
|
||||
(libstdc++-v3, version 2.90.8 currently puts them in <tt>std::</tt> only)
|
||||
On the other hand, if you include only the new header
|
||||
(i.e. <tt><cmath></tt>), the symbols will only be defined in
|
||||
namespace <tt>std::</tt> (and macros will be converted to
|
||||
inline-functions).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For more information on this, and for information on how the GNU C++
|
||||
implementation reuses ("shadows") the C library-functions, have
|
||||
a look at <a href = "http://www.cantrip.org/cheaders.html">www.cantrip.org</a>.
|
||||
</p>
|
||||
|
||||
<h3><tt><fstream></tt> does not define <tt>std::cout</tt>,
|
||||
<tt>std::cin</tt> etc.</h3>
|
||||
<p>
|
||||
In previous versions of the standard, <tt><fstream.h></tt>,
|
||||
<tt><ostream.h></tt> and <tt><istream.h></tt> used to define
|
||||
<tt>cout</tt>, <tt>cin</tt> and so on. With libstdc++-v3, you need
|
||||
to include <tt><iostream></tt> to define these.
|
||||
<tt>cout</tt>, <tt>cin</tt> and so on. Because of the templatized iostreams
|
||||
in libstdc++-v3, you need to include <tt><iostream></tt> explicitly
|
||||
to define these.
|
||||
</p>
|
||||
|
||||
<a name = "iterators">
|
||||
<h2>Iterators</h2>
|
||||
</a>
|
||||
<p>
|
||||
The following are not proper uses of iterators, but may be working fixes
|
||||
for existing uses of iterators.
|
||||
<ul>
|
||||
<li>you cannot do <tt>ostream::operator<<(iterator)</tt> to print the
|
||||
address of the iterator => use <tt><< &*iterator</tt> instead ?
|
||||
<li>you cannot clear an iterator's reference (<tt>iterator = 0</tt>)
|
||||
=> use <tt>iterator = iterator_type();</tt> ?
|
||||
<li><tt>if (iterator)</tt> won't work any more
|
||||
=> use <tt>if (iterator != iterator_type())</tt> ?
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<a name = "macros">
|
||||
<h2>Libc-macros (i.e. <tt>isspace</tt> from <tt><cctype></tt>)</h2>
|
||||
</a>
|
||||
<p>
|
||||
Glibc 2.0.x and 2.1.x define the <tt><ctype.h></tt>-functionality
|
||||
as macros (isspace, isalpha etc.). Libstdc++-v3 "shadows" these macros
|
||||
as described in the <a href = "#cheaders">section on C-headers</a>.
|
||||
</p>
|
||||
<p>
|
||||
Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3 for
|
||||
gcc 2.95.2), however, keep these functions as macros, and so it is not
|
||||
back-portable to use fully qualified names. For example:
|
||||
<pre>
|
||||
#include <cctype>
|
||||
int main() { std::isspace('X'); }
|
||||
</pre>
|
||||
will result in something like this (unless using g++-v3):
|
||||
<pre>
|
||||
std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ;
|
||||
</pre>
|
||||
Another problem arises if you put a <tt>using namespace std;</tt>
|
||||
declaration at the top, and include <tt><ctype.h></tt>. This will
|
||||
result in ambiguities between the definitions in the global namespace
|
||||
(<tt><ctype.h></tt>) and the definitions in namespace <tt>std::</tt>
|
||||
(<tt><cctype></tt>).
|
||||
</p>
|
||||
<p>
|
||||
One solution I can think of is to test for -v3 using autoconf-macros, and
|
||||
define macros for each of the C-functions (maybe that is possible with one
|
||||
"wrapper" macro as well ?).
|
||||
</p>
|
||||
<p>
|
||||
Another solution which would fix g++ is to tell the user to modify
|
||||
a header-file so that g++-2 (egcs 1.x) and g++-3 (gcc 2.95.2)
|
||||
enable a macro which tells <ctype.h> to define functions instead of
|
||||
macros:
|
||||
<pre>
|
||||
// This keeps isanum, et al from being propagated as macros.
|
||||
#if __linux__
|
||||
#define __NO_CTYPE 1
|
||||
#endif
|
||||
|
||||
[ now include <ctype.h> ]
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<a name = "about">
|
||||
<h2>About...</h2>
|
||||
</a>
|
||||
<p>
|
||||
Please send any experience, additions, corrections or questions to <a href =
|
||||
"mailto:fnatter@gmx.net">fnatter@gmx.net</a> or for discussion to
|
||||
the libstdc++-v3-mailing-list.
|
||||
Please send any experience, additions, corrections or questions to <a href
|
||||
= "mailto:fnatter@gmx.net">fnatter@gmx.net</a> or for discussion to the
|
||||
libstdc++-v3-mailing-list.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
** Locations of "the most recent snapshot is the Nth" text are
|
||||
** answers 1_1, 1_4, 4_1, 5_6.
|
||||
-->
|
||||
<!-- $Id: index.html,v 1.21 2000/03/26 03:44:35 pme Exp $ -->
|
||||
<!-- $Id: index.html,v 1.1 2000/04/21 20:33:32 bkoz Exp $ -->
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
|
@ -106,7 +106,7 @@ HREF="ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8.tar.gz">the
|
|||
|
||||
<HR>
|
||||
<H2><A NAME="1_2">1.2 Why should I use libstdc++?</A></H2>
|
||||
<P>The recent completion of the ISO C++ standardization gave the
|
||||
<P>The completion of the ISO C++ standardization gave the
|
||||
C++ community a powerful set of reuseable tools in the form
|
||||
of the C++ Standard Library. However, all existing C++
|
||||
implementations are (as the Draft Standard used to say)
|
||||
|
@ -117,10 +117,10 @@ HREF="ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8.tar.gz">the
|
|||
(<TT>gcc</TT>, <TT>g++</TT>, etc) is widely considered to be
|
||||
one of the leading compilers in the world. Its development
|
||||
has recently been taken over by the
|
||||
<A HREF="http://egcs.cygnus.com/">GCC team</A>. All of
|
||||
<A HREF="http://gcc.gnu.org/">GCC team</A>. All of
|
||||
the rapid development and near-legendary
|
||||
<A
|
||||
HREF="http://egcs.cygnus.com/gcc-2.95/buildstat.html">portability</A>
|
||||
HREF="http://gcc.gnu.org/gcc-2.95/buildstat.html">portability</A>
|
||||
that are the hallmarks of an open-source project are being
|
||||
applied to libstdc++.
|
||||
</P>
|
||||
|
@ -214,7 +214,7 @@ HREF="ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8.tar.gz">
|
|||
stuff" classes will probably migrate there.)
|
||||
</P>
|
||||
<P>For the bold and/or desperate, the
|
||||
<A HREF="http://egcs.cygnus.com/faq.html#libg++">GCC FAQ</A>
|
||||
<A HREF="http://gcc.gnu.org/faq.html#libg++">GCC FAQ</A>
|
||||
describes where to find the last libg++ source.
|
||||
</P>
|
||||
|
||||
|
@ -271,32 +271,13 @@ HREF="http://sourceware.cygnus.com/automake/">automake</A>.
|
|||
<P>Yes, as of 2.90.8, it is intended as such.</P>
|
||||
<P>The installation instructions cover this in more detail, but
|
||||
replacing the older library requires rebuilding some of the
|
||||
code that comes with g++. If you do not want to do that,
|
||||
then you'll be missing out on a lot of functionality, but it
|
||||
can still be done.
|
||||
code that comes with g++. You will need sources for the 2.95.2
|
||||
compiler in order to build this snapshot. Building the library
|
||||
on its own and then using -I/-L will no longer work.
|
||||
</P>
|
||||
<P>In that case, you can use the same procedure that used to be
|
||||
required:
|
||||
<OL>
|
||||
<LI> Build GCC as usual.
|
||||
<LI> Build libstdc++-v3 as described in the installation
|
||||
document, under the section "without GCC
|
||||
sources." Be aware that you will lose the std::
|
||||
namespace encapsulation.
|
||||
<LI> Build your code using -I and -L options so that GCC
|
||||
finds the libstdc++-v3 headers and library before the
|
||||
older headers in the GCC include tree.
|
||||
</OL>
|
||||
</P>
|
||||
<P>If you configured libstdc++-v3 to install under a directory
|
||||
called <B>/lib3</B>, for example, the command line would look
|
||||
something like
|
||||
<!-- Careful, the leading spaces in PRE show up directly. -->
|
||||
<PRE>
|
||||
g++ -Wall -I/lib3/include/g++-v3 -L/lib3/lib foo.cc -o foo
|
||||
</PRE>
|
||||
More information (such as using SGI or GNU extensions, and
|
||||
setting the runtime library path) can be found in the RELEASE-NOTES.
|
||||
<P>After the 2.90.8 snapshot, the library sources were integrated
|
||||
into the compiler sources. Future releases of the compiler will
|
||||
ship with libstdc++-v3.
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
|
@ -511,7 +492,7 @@ to the list</A>, Nathan Myers announced that he has started a list of
|
|||
<H2><A NAME="4_5">4.5 Aw, that's easy to fix!</A></H2>
|
||||
<P>If you have found a bug in the library and you think you have
|
||||
a working fix, then send it in! The main GCC site has a page
|
||||
on <A HREF="http://egcs.cygnus.com/contribute.html">submitting
|
||||
on <A HREF="http://gcc.gnu.org/contribute.html">submitting
|
||||
patches</A> that covers the procedure, but for libstdc++ you
|
||||
should of course send the patch to our mailing list, not the
|
||||
GCC mailing list. The libstdc++
|
||||
|
@ -664,7 +645,7 @@ HREF="http://sourceware.cygnus.com/ml/libstdc++/1999/msg00084.html">speculation<
|
|||
Comments and suggestions are welcome, and may be sent to
|
||||
<A HREF="mailto:pme@sourceware.cygnus.com">Phil Edwards</A> or
|
||||
<A HREF="mailto:gdr@egcs.cygnus.com">Gabriel Dos Reis</A>.
|
||||
<BR> $Id: index.html,v 1.21 2000/03/26 03:44:35 pme Exp $
|
||||
<BR> $Id: index.html,v 1.1 2000/04/21 20:33:32 bkoz Exp $
|
||||
</EM></P>
|
||||
|
||||
|
||||
|
|
|
@ -65,11 +65,11 @@
|
|||
|
||||
1.2 Why should I use libstdc++?
|
||||
|
||||
The recent completion of the ISO C++ standardization gave the C++
|
||||
community a powerful set of reuseable tools in the form of the C++
|
||||
Standard Library. However, all existing C++ implementations are (as
|
||||
the Draft Standard used to say) "incomplet and incorrekt," and many
|
||||
suffer from limitations of the compilers that use them.
|
||||
The completion of the ISO C++ standardization gave the C++ community a
|
||||
powerful set of reuseable tools in the form of the C++ Standard
|
||||
Library. However, all existing C++ implementations are (as the Draft
|
||||
Standard used to say) "incomplet and incorrekt," and many suffer from
|
||||
limitations of the compilers that use them.
|
||||
|
||||
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
||||
widely considered to be one of the leading compilers in the world. Its
|
||||
|
@ -206,25 +206,13 @@
|
|||
|
||||
The installation instructions cover this in more detail, but replacing
|
||||
the older library requires rebuilding some of the code that comes with
|
||||
g++. If you do not want to do that, then you'll be missing out on a
|
||||
lot of functionality, but it can still be done.
|
||||
g++. You will need sources for the 2.95.2 compiler in order to build
|
||||
this snapshot. Building the library on its own and then using -I/-L
|
||||
will no longer work.
|
||||
|
||||
In that case, you can use the same procedure that used to be required:
|
||||
1. Build GCC as usual.
|
||||
2. Build libstdc++-v3 as described in the installation document,
|
||||
under the section "without GCC sources." Be aware that you will
|
||||
lose the std:: namespace encapsulation.
|
||||
3. Build your code using -I and -L options so that GCC finds the
|
||||
libstdc++-v3 headers and library before the older headers in the
|
||||
GCC include tree.
|
||||
|
||||
If you configured libstdc++-v3 to install under a directory called
|
||||
/lib3, for example, the command line would look something like
|
||||
g++ -Wall -I/lib3/include/g++-v3 -L/lib3/lib foo.cc -o foo
|
||||
|
||||
|
||||
More information (such as using SGI or GNU extensions, and setting the
|
||||
runtime library path) can be found in the RELEASE-NOTES.
|
||||
After the 2.90.8 snapshot, the library sources were integrated into
|
||||
the compiler sources. Future releases of the compiler will ship with
|
||||
libstdc++-v3.
|
||||
_________________________________________________________________
|
||||
|
||||
2.3 What is this CVS thing that you keep mentioning?
|
||||
|
@ -533,71 +521,71 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
|
|||
|
||||
Comments and suggestions are welcome, and may be sent to [71]Phil
|
||||
Edwards or [72]Gabriel Dos Reis.
|
||||
$Id: index.txt,v 1.17 2000/03/26 03:44:35 pme Exp $
|
||||
$Id: index.html,v 1.1 2000/04/21 20:33:32 bkoz Exp $
|
||||
|
||||
References
|
||||
|
||||
1. http://sourceware.cygnus.com/libstdc++/
|
||||
2. http://sourceware.cygnus.com/libstdc++/faq/index.html
|
||||
3. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/index.html
|
||||
4. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_0
|
||||
5. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_1
|
||||
6. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_2
|
||||
7. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_3
|
||||
8. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_4
|
||||
9. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_5
|
||||
10. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_6
|
||||
11. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_7
|
||||
12. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#1_8
|
||||
13. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#2_0
|
||||
14. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#2_1
|
||||
15. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#2_2
|
||||
16. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#2_3
|
||||
17. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#2_4
|
||||
18. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#3_0
|
||||
19. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#3_1
|
||||
20. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#3_2
|
||||
21. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#4_0
|
||||
22. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#4_1
|
||||
23. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#4_2
|
||||
24. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#4_3
|
||||
25. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#4_4
|
||||
26. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#4_5
|
||||
27. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_0
|
||||
28. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_1
|
||||
29. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_2
|
||||
30. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_3
|
||||
31. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_4
|
||||
32. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_5
|
||||
33. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_6
|
||||
34. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#5_7
|
||||
3. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/index.html
|
||||
4. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_0
|
||||
5. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_1
|
||||
6. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_2
|
||||
7. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_3
|
||||
8. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_4
|
||||
9. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_5
|
||||
10. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_6
|
||||
11. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_7
|
||||
12. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#1_8
|
||||
13. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_0
|
||||
14. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_1
|
||||
15. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_2
|
||||
16. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_3
|
||||
17. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_4
|
||||
18. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#3_0
|
||||
19. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#3_1
|
||||
20. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#3_2
|
||||
21. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#4_0
|
||||
22. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#4_1
|
||||
23. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#4_2
|
||||
24. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#4_3
|
||||
25. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#4_4
|
||||
26. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#4_5
|
||||
27. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_0
|
||||
28. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_1
|
||||
29. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_2
|
||||
30. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_3
|
||||
31. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_4
|
||||
32. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_5
|
||||
33. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_6
|
||||
34. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#5_7
|
||||
35. ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8.tar.gz
|
||||
36. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/17_intro/DESIGN
|
||||
37. http://egcs.cygnus.com/
|
||||
38. http://egcs.cygnus.com/gcc-2.95/buildstat.html
|
||||
39. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/index.html
|
||||
36. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/DESIGN
|
||||
37. http://gcc.gnu.org/
|
||||
38. http://gcc.gnu.org/gcc-2.95/buildstat.html
|
||||
39. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/index.html
|
||||
40. ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8.tar.gz
|
||||
41. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/index.html
|
||||
41. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/index.html
|
||||
42. http://www.deja.com/getdoc.xp?AN=469581698&fmt=text
|
||||
43. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/17_intro/contribute.html
|
||||
43. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/contribute.html
|
||||
44. http://www.boost.org/
|
||||
45. http://egcs.cygnus.com/faq.html#libg++
|
||||
45. http://gcc.gnu.org/faq.html#libg++
|
||||
46. mailto:libstdc++@sourceware.cygnus.com
|
||||
47. mailto:pme@sourceware.cygnus.com
|
||||
48. mailto:gdr@egcs.cygnus.com
|
||||
49. http://sourceware.cygnus.com/autoconf/
|
||||
50. http://sourceware.cygnus.com/automake/
|
||||
51. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/documentation.html
|
||||
52. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/17_intro/RELEASE-NOTES
|
||||
51. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/documentation.html
|
||||
52. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/RELEASE-NOTES
|
||||
53. http://www.gnu.org/software/cvs/cvs.html
|
||||
54. http://www.cyclic.com/
|
||||
55. http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html
|
||||
56. file://localhost/ml/libstdc++/1998/msg00006.html
|
||||
57. http://www.cantrip.org/draft-bugs.txt
|
||||
58. http://anubis.dkuug.dk/jtc1/sc22/wg21/
|
||||
59. http://egcs.cygnus.com/contribute.html
|
||||
60. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/17_intro/contribute.html
|
||||
61. file://localhost/home0/pedwards/EGCS/gcc-2.95.2/libstdc++-v3/docs/faq/index.html#2_4
|
||||
59. http://gcc.gnu.org/contribute.html
|
||||
60. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/contribute.html
|
||||
61. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_4
|
||||
62. http://sourceware.cygnus.com/ml/libstdc++/1999/msg00080.html
|
||||
63. http://sourceware.cygnus.com/ml/libstdc++/1999/msg00084.html
|
||||
64. http://www.sgi.com/Technology/STL/
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
These pages are stoically maintained by
|
||||
<A HREF="mailto:pme@sourceware.cygnus.com">Phil Edwards</a>, who might now
|
||||
actually be able to maintain them as the directory structure is slowly
|
||||
congealing into some kind of permanent structure, and was last modified on
|
||||
2000-03-24.
|
||||
congealing into some kind of permanent structure, and were last modified on
|
||||
2000-04-29.
|
||||
</EM></P>
|
||||
|
||||
<!-- And this closes everything out. -->
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<TITLE>How to automatically rebuild libgcc.a.</TITLE>
|
||||
<LINK REL="home" HREF="http://sourceware.cygnus.com/libstdc++/">
|
||||
<LINK REL=StyleSheet HREF="lib3styles.css">
|
||||
<!-- $Id: gccrebuild.html,v 1.1 2000/01/14 20:03:09 pme Exp $ -->
|
||||
<!-- $Id: gccrebuild.html,v 1.1 2000/04/21 20:33:30 bkoz Exp $ -->
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
|
@ -39,7 +39,10 @@
|
|||
as <EM>objdir</EM>; here it will be called <EM>GCCobjdir</EM>.
|
||||
</P>
|
||||
|
||||
<P>This is a kludge, and will go away eventually.</P>
|
||||
<P>This is a kludge, and will go away eventually. (In a sense, it has
|
||||
already gone away, as the library sources have been merged into the
|
||||
compiler sources.)
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
|
||||
|
@ -111,7 +114,7 @@
|
|||
|
||||
<HR>
|
||||
<P CLASS="fineprint"><EM>
|
||||
$Id: gccrebuild.html,v 1.1 2000/01/14 20:03:09 pme Exp $
|
||||
$Id: gccrebuild.html,v 1.1 2000/04/21 20:33:30 bkoz Exp $
|
||||
</EM></P>
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
Please keep this list in alphabetical order.
|
||||
|
||||
<!--
|
||||
Latest update 2000-03-09, more or less.
|
||||
Latest update 2000-04-29, more or less.
|
||||
-->
|
||||
<UL>
|
||||
|
||||
|
@ -56,7 +56,8 @@
|
|||
|
||||
<LI>Benjamin Kosnik for, well, everything.
|
||||
|
||||
<LI>Martin v. Loewis for namespace patches and fixes.
|
||||
<LI>Martin v. Loewis for namespace patches and fixes, and tons of
|
||||
assistance with the compiler merges.
|
||||
|
||||
<LI>Philip Martin for lots of string and vector iterator fixes and
|
||||
improvements, and string clean up and testsuites.
|
||||
|
@ -71,7 +72,10 @@
|
|||
<LI>Nathan Myers for inflicting locales on the rest of us, working on
|
||||
iostream, string and string documentation (!), fixing that
|
||||
__black_count loop that so many people bugged us about, and creating
|
||||
the initial documentation (DESIGN, CHECKLIST, and so forth).
|
||||
the initial documentation (DESIGN, CHECKLIST, and so forth). Huge
|
||||
chunks of the MT-safe code are also due to his work.
|
||||
|
||||
<LI>Felix Natter for documentation on porting.
|
||||
|
||||
<LI>Chip Salzenberg for patches and improvements to locales, traits,
|
||||
Makefiles, libio, libtool hackery, and "long long" support.
|
||||
|
@ -84,11 +88,15 @@
|
|||
</UL></P>
|
||||
|
||||
<P>We'd also like to thank the folks who have contributed time and
|
||||
energy in testing libstdc++-v3:
|
||||
energy in testing libstdc++-v3, especially those sending in testsuite
|
||||
evaluations:
|
||||
|
||||
<UL>
|
||||
|
||||
<LI>Folks for sending in testsuite evaluations.
|
||||
<LI>Jürgen Freyh
|
||||
<LI>llewelly <!-- Honest, that's the only name in the messages. -->
|
||||
<LI>Loren James Rittle
|
||||
<LI>George Talbot
|
||||
|
||||
</UL></P>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue