parent
4bfc4dda74
commit
3496c0bec4
|
@ -3,7 +3,7 @@
|
||||||
@setfilename g++FAQ.info
|
@setfilename g++FAQ.info
|
||||||
@settitle Frequently asked questions about the GNU C++ compiler
|
@settitle Frequently asked questions about the GNU C++ compiler
|
||||||
@setchapternewpage off
|
@setchapternewpage off
|
||||||
@c version: @(#)g++FAQ.texi 1.56 09/15/97
|
@c version: @(#)g++FAQ.texi 1.57 12/14/97
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
@iftex
|
@iftex
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
@titlepage
|
@titlepage
|
||||||
@title G++ FAQ
|
@title G++ FAQ
|
||||||
@subtitle Frequently asked questions about the GNU C++ compiler
|
@subtitle Frequently asked questions about the GNU C++ compiler
|
||||||
@subtitle September 14, 1997
|
@subtitle December 14, 1997
|
||||||
@sp 1
|
@sp 1
|
||||||
@author Joe Buck
|
@author Joe Buck
|
||||||
@page
|
@page
|
||||||
|
@ -35,15 +35,14 @@ all those who sent suggestions for improvements. Thanks to Marcus Speh
|
||||||
for doing the index. A hypertext version is available on the World Wide
|
for doing the index. A hypertext version is available on the World Wide
|
||||||
Web at @file{http://www.cygnus.com/misc/g++FAQ_toc.html}.
|
Web at @file{http://www.cygnus.com/misc/g++FAQ_toc.html}.
|
||||||
|
|
||||||
This document has just been reorganized a bit. There is some new
|
@strong{News flash}: egcs has been released, and the 2.8.0 release is
|
||||||
information about upcoming g++ releases and egcs; more needs to be done
|
expected very soon!
|
||||||
but that will need to wait for next time. A diff would look misleadingly
|
|
||||||
large, since I blew away and rebuilt the texinfo menus.
|
|
||||||
|
|
||||||
Please send updates and corrections to the FAQ to
|
Please send updates and corrections to the FAQ to
|
||||||
@code{jbuck@@synopsys.com}. Please do @emph{not} use me as a resource
|
@code{jbuck@@synopsys.com}. Please do @emph{not} use me as a resource
|
||||||
to get your questions answered; that's what @file{gnu.g++.help} is for and I
|
to get your questions answered; that's what @file{gnu.g++.help} is for and I
|
||||||
don't have the time to support the net's use of g++.
|
don't have the time to support the net's use of g++. If you ignore this
|
||||||
|
request your message to me may be deleted without a reply. Sorry.
|
||||||
|
|
||||||
Many FAQs, including this one, are available on the archive site
|
Many FAQs, including this one, are available on the archive site
|
||||||
``rtfm.mit.edu''; see @*
|
``rtfm.mit.edu''; see @*
|
||||||
|
@ -64,6 +63,7 @@ or in HTML form at @file{http://www.cerfnet.com/~mpcline/On-Line-C++-FAQs/}.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* basics:: What is g++? How do I get it?
|
* basics:: What is g++? How do I get it?
|
||||||
|
* egcs and 2.8.0:: The next generation(s) of g++
|
||||||
* installation:: How to install, installation problems
|
* installation:: How to install, installation problems
|
||||||
* evolution:: The Evolution of g++
|
* evolution:: The Evolution of g++
|
||||||
* User Problems:: Commonly reported problems and bugs
|
* User Problems:: Commonly reported problems and bugs
|
||||||
|
@ -81,6 +81,14 @@ The basics: what is g++?
|
||||||
* g++ for other platforms::
|
* g++ for other platforms::
|
||||||
* 1.x vs 2.x versions::
|
* 1.x vs 2.x versions::
|
||||||
|
|
||||||
|
The Next Generation(s) of g++
|
||||||
|
|
||||||
|
* egcs-intro:: What is egcs?
|
||||||
|
* egcs-whats-new:: What's new in egcs vs 2.7.2?
|
||||||
|
* egcs-run-both:: How can I run both egcs and an FSF release?
|
||||||
|
* egcs-vs-2.8.0:: How will egcs affect 2.8.0?
|
||||||
|
* egcs-robustness:: How robust is egcs-1.0?
|
||||||
|
|
||||||
Installation Issues and Problems
|
Installation Issues and Problems
|
||||||
|
|
||||||
* gcc-2 + g++-1::
|
* gcc-2 + g++-1::
|
||||||
|
@ -102,11 +110,8 @@ Installation Issues and Problems
|
||||||
|
|
||||||
The Evolution of g++
|
The Evolution of g++
|
||||||
|
|
||||||
* version 2.7.x::
|
* version 2.7.x:: What's changed in 2.7.x from earlier versions
|
||||||
* libstdc++::
|
* libstdc++::
|
||||||
* new work::
|
|
||||||
* egcs::
|
|
||||||
* When?::
|
|
||||||
|
|
||||||
User Problems
|
User Problems
|
||||||
|
|
||||||
|
@ -138,7 +143,7 @@ User Problems
|
||||||
* assignment to streams::
|
* assignment to streams::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node basics, installation, Top, Top
|
@node basics, egcs and 2.8.0, Top, Top
|
||||||
@chapter The basics: what is g++?
|
@chapter The basics: what is g++?
|
||||||
|
|
||||||
@cindex Free Software Foundation
|
@cindex Free Software Foundation
|
||||||
|
@ -167,6 +172,11 @@ or GPL (@pxref{legalities}).
|
||||||
@node latest versions, g++ for Unix, basics, basics
|
@node latest versions, g++ for Unix, basics, basics
|
||||||
@section What is the latest version of gcc, g++, and libg++?
|
@section What is the latest version of gcc, g++, and libg++?
|
||||||
|
|
||||||
|
@cindex egcs release
|
||||||
|
|
||||||
|
The egcs project (on the Web: @file{http://www.cygnus.com/egcs/}) has
|
||||||
|
now released egcs-1.0 as of December 3, 1997.
|
||||||
|
|
||||||
@cindex gcc/g++, version date
|
@cindex gcc/g++, version date
|
||||||
The current version of gcc/g++ is 2.7.2.3, released August 20, 1997.
|
The current version of gcc/g++ is 2.7.2.3, released August 20, 1997.
|
||||||
Although that looks very recent, the only change is a minor patch to
|
Although that looks very recent, the only change is a minor patch to
|
||||||
|
@ -436,7 +446,144 @@ install the C++ compiler as well.
|
||||||
One could argue that we shouldn't even refer to "g++-2.x.y" but it's a
|
One could argue that we shouldn't even refer to "g++-2.x.y" but it's a
|
||||||
convention. It means ``the C++ compiler included with gcc-2.x.y.''
|
convention. It means ``the C++ compiler included with gcc-2.x.y.''
|
||||||
|
|
||||||
@node installation, evolution, basics, Top
|
@node egcs and 2.8.0, installation, basics, Top
|
||||||
|
@chapter The Next Generation(s) of g++
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* egcs-intro:: What is egcs?
|
||||||
|
* egcs-whats-new:: What's new in egcs vs 2.7.2?
|
||||||
|
* egcs-run-both:: How can I run both egcs and an FSF release?
|
||||||
|
* egcs-vs-2.8.0:: How will egcs affect 2.8.0?
|
||||||
|
* egcs-robustness:: How robust is egcs-1.0?
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node egcs-intro, egcs-whats-new, egcs and 2.8.0, egcs and 2.8.0
|
||||||
|
@section What is egcs?
|
||||||
|
|
||||||
|
egcs is the Experimental GNU compiler system (see
|
||||||
|
@file{http://www.cygnus.com/egcs} on the Web). It is an effort to
|
||||||
|
accelerate development of new gcc features by providing a more open
|
||||||
|
development model than gcc has traditionally used.
|
||||||
|
|
||||||
|
The first egcs release, egcs-1.0, came out on December 3, 1997.
|
||||||
|
Questions not addressed here may be answered in the egcs FAQ
|
||||||
|
(@file{http://www.cygnus.com/egcs/faq.html}).
|
||||||
|
|
||||||
|
@node egcs-whats-new, egcs-run-both, egcs-intro, egcs and 2.8.0
|
||||||
|
@section What new C++ features are in egcs?
|
||||||
|
|
||||||
|
@strong{Note}: unless indicated otherwise, these features are expected
|
||||||
|
to be present in g++ 2.8.0 when released.
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
@cindex integrated libstdc++
|
||||||
|
|
||||||
|
The standard C++ classes are integrated with the egcs release (this is
|
||||||
|
@emph{not} expected to be true of gcc-2.8.0). libg++ is not being
|
||||||
|
supported, though a version that will work with egcs has been
|
||||||
|
contributed (FIXME: pointer?). The compiler and library are configured
|
||||||
|
and built in one step.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@cindex new template implementation
|
||||||
|
A completely new template implementation, much closer to the draft
|
||||||
|
standard. Limitations in 2.7.2.x concerning inlining template functions
|
||||||
|
will be eliminated. Static template data members, template class member
|
||||||
|
functions, partial specification, and default template arguments will be
|
||||||
|
supported. An instantiation method resembling that used in Borland C++
|
||||||
|
(instantiating functions possibly in multiple .o files and using weak
|
||||||
|
symbols to link correctly) is provided, in addition to other
|
||||||
|
options. The SGI version of STL is shipped verbatim with libstdc++.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@cindex redundant template elimination
|
||||||
|
@cindex templates: removing redundancy
|
||||||
|
On ELF platforms (Linux/ELF, Solaris, SVR4), if the GNU linker is used,
|
||||||
|
duplicated template functions and virtual function tables are eliminated
|
||||||
|
at link time.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@cindex repository
|
||||||
|
@cindex -frepo
|
||||||
|
The @code{-frepo} flag is supported in egcs (it will not be in 2.8.0).
|
||||||
|
However, because of the previous item, I don't recommend its use on ELF
|
||||||
|
systems.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@cindex new exception implementation
|
||||||
|
Exception handling has been re-worked; exceptions will work together
|
||||||
|
with optimization.
|
||||||
|
Actually, there are two separate implementations: one based on setjmp/longjmp
|
||||||
|
and designed to be highly portable, and one designed to be more efficient but
|
||||||
|
requiring more processor-specific support (getting exceptions right has proven
|
||||||
|
to be extremely difficult and has been the chief obstacle to getting a new
|
||||||
|
release out).
|
||||||
|
|
||||||
|
@item
|
||||||
|
@cindex RTTI
|
||||||
|
RTTI has been re-done to work correctly and is on by default.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@cindex overloading
|
||||||
|
Overloading has been re-worked to conform to the latest draft of the
|
||||||
|
standard.
|
||||||
|
|
||||||
|
@item
|
||||||
|
There are many more changes: see @file{http://www.cygnus.com/egcs/c++features.html} for a list.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Features that are still missing include namespaces and templates as
|
||||||
|
template arguments.
|
||||||
|
|
||||||
|
@node egcs-run-both, egcs-vs-2.8.0, egcs-whats-new, egcs and 2.8.0
|
||||||
|
@section How can I run both egcs and an FSF release of g++ on the same machine?
|
||||||
|
|
||||||
|
The recommended approach is to provide a different argument to the
|
||||||
|
@code{--prefix} flag when you configure egcs. For example, say
|
||||||
|
@code{--prefix=/usr/local/egcs} and then, after installation, you
|
||||||
|
can make symbolic links from @file{/usr/local/egcs/bin} to whereever
|
||||||
|
you want, for example
|
||||||
|
|
||||||
|
@example
|
||||||
|
ln -s /usr/local/egcs/bin/gcc /usr/local/bin/egcc
|
||||||
|
ln -s /usr/local/egcs/bin/g++ /usr/local/bin/eg++
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@node egcs-vs-2.8.0, egcs-robustness, egcs-run-both, egcs and 2.8.0
|
||||||
|
@section What about 2.8.0? How does egcs affect the 2.8.x development?
|
||||||
|
|
||||||
|
2.8.0 is expected Real Soon Now (I would guess by the end of 1997, but that
|
||||||
|
is only a guess). The C++ front end should be essentially the same.
|
||||||
|
|
||||||
|
Bug fixes generated in egcs will be passed to the 2.8.x releases for
|
||||||
|
inclusion; the reverse is also taking place, though a bug fix may
|
||||||
|
appear in one before it does in the other.
|
||||||
|
|
||||||
|
@node egcs-robustness, , egcs-vs-2.8.0, egcs and 2.8.0
|
||||||
|
@section How solid is egcs-1.0?
|
||||||
|
|
||||||
|
While the 'e' stands for 'experimental', egcs has been tested thoroughly
|
||||||
|
and should be of high quality. There are a few glitches which should be
|
||||||
|
fixed shortly (in a 1.0.1 release, probably in early January):
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
Deeply nested templates sometimes lead to a very large memory requirement
|
||||||
|
if the @code{-Wreturn-type} option is on (note: this flag is implicitly
|
||||||
|
turned on by @code{-W} or @code{-Wall}. A workaround is to give the
|
||||||
|
flag @code{-Wno-return-type} if you use @code{-Wall}.
|
||||||
|
|
||||||
|
@item
|
||||||
|
On Red Hat 5.0, it may be necessary to link all C++ programs with
|
||||||
|
@code{-lpthread} to work around an undefined symbol problem.
|
||||||
|
|
||||||
|
@item
|
||||||
|
A patch is needed to fix egcs on Solaris/X86. It is in the egcs FAQ
|
||||||
|
(see above).
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@node installation, evolution, egcs and 2.8.0, Top
|
||||||
@chapter Installation Issues and Problems
|
@chapter Installation Issues and Problems
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
@ -554,6 +701,11 @@ debug format (e.g. Suns running SunOS 4.x), the GNU linker compresses
|
||||||
the debug symbol table considerably. The 2.7 version adds some symbol
|
the debug symbol table considerably. The 2.7 version adds some symbol
|
||||||
table compression for ELF and Solaris targets.
|
table compression for ELF and Solaris targets.
|
||||||
|
|
||||||
|
Users of egcs or 2.8.0 (when released) on ELF systems should definitely
|
||||||
|
use GNU ld (2.8 or later), as it will automatically remove duplicate
|
||||||
|
instantiations of templates, virtual function tables, or ``outlined''
|
||||||
|
copies of inline functions.
|
||||||
|
|
||||||
@cindex collect linker, advantages
|
@cindex collect linker, advantages
|
||||||
Advantages of collect:
|
Advantages of collect:
|
||||||
|
|
||||||
|
@ -951,10 +1103,7 @@ in the future.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* version 2.7.x:: What's changed in 2.7.x from earlier versions
|
* version 2.7.x:: What's changed in 2.7.x from earlier versions
|
||||||
* libstdc++:: The GNU C++ standard library
|
* libstdc++::
|
||||||
* new work:: What's been done since 2.7.x
|
|
||||||
* egcs:: The Experimental GNU Compiler System
|
|
||||||
* When?:: When can I get all this new stuff?
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node version 2.7.x, libstdc++, evolution, evolution
|
@node version 2.7.x, libstdc++, evolution, evolution
|
||||||
|
@ -1086,7 +1235,7 @@ though they are not needed).
|
||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node libstdc++, new work, version 2.7.x, evolution
|
@node libstdc++, , version 2.7.x, evolution
|
||||||
@section The GNU Standard C++ Library
|
@section The GNU Standard C++ Library
|
||||||
|
|
||||||
The GNU Standard C++ Library (also called the ``GNU ANSI C++ Library''
|
The GNU Standard C++ Library (also called the ``GNU ANSI C++ Library''
|
||||||
|
@ -1112,67 +1261,6 @@ The maintainers of libg++ have de-emphasized work on the older libg++ classes
|
||||||
in favor of enhancing libstdc++ to cover the full language, so while libg++
|
in favor of enhancing libstdc++ to cover the full language, so while libg++
|
||||||
will always be available, enhancements to it should not be expected.
|
will always be available, enhancements to it should not be expected.
|
||||||
|
|
||||||
@node new work, egcs, libstdc++, evolution
|
|
||||||
@section What can we expect in future gcc releases?
|
|
||||||
|
|
||||||
A great deal of work has gone into enhancements to the C++ front end, as well
|
|
||||||
as to other aspects of the compiler.
|
|
||||||
|
|
||||||
The next major release(s) of gcc/g++ can be expected to have the following
|
|
||||||
features:
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@cindex new template implementation
|
|
||||||
@item
|
|
||||||
A completely new template implementation, much closer to the draft
|
|
||||||
standard. Limitations in 2.7.2.x concerning inlining template functions
|
|
||||||
will be eliminated. Static template data members, template class member
|
|
||||||
functions, partial specification, and default template arguments will be
|
|
||||||
supported. An instantiation method resembling that used in Borland C++
|
|
||||||
(instantiating functions possibly in multiple .o files and using weak
|
|
||||||
symbols to link correctly) will be provided, in addition to other
|
|
||||||
options. The SGI version of STL will be shipped with libstdc++ and will
|
|
||||||
compile unchanged.
|
|
||||||
|
|
||||||
@item
|
|
||||||
@cindex new exception implementation
|
|
||||||
Exception handling has been re-worked; exceptions will work together
|
|
||||||
with optimization.
|
|
||||||
Actually, there are two separate implementations: one based on setjmp/longjmp
|
|
||||||
and designed to be highly portable, and one designed to be more efficient but
|
|
||||||
requiring more processor-specific support (getting exceptions right has proven
|
|
||||||
to be extremely difficult and has been the chief obstacle to getting a new
|
|
||||||
release out).
|
|
||||||
|
|
||||||
@item
|
|
||||||
@cindex RTTI
|
|
||||||
RTTI has been re-done to work correctly and is on by default.
|
|
||||||
|
|
||||||
@item
|
|
||||||
@cindex overloading
|
|
||||||
Overloading has been re-worked to conform to the latest draft of the
|
|
||||||
standard.
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
Features that are still missing include namespaces and templates as
|
|
||||||
template arguments.
|
|
||||||
|
|
||||||
@node egcs, When?, new work, evolution
|
|
||||||
@section What's this I hear about egcs?
|
|
||||||
|
|
||||||
The egcs effort is a new effort to merge several threads of gcc
|
|
||||||
development and to provide a faster development process.
|
|
||||||
For more information see @file{http://www.cygnus.com/egcs/}.
|
|
||||||
|
|
||||||
@node When?, , egcs, evolution
|
|
||||||
@section OK, when can I get this stuff?
|
|
||||||
|
|
||||||
The FSF has a policy of never announcing release dates in advance.
|
|
||||||
I'm sure this is frustrating to a lot of people, since it's taken
|
|
||||||
so long, and this frustration was one of the reasons the egcs effort
|
|
||||||
was created. An egcs release should be expected to occur in the
|
|
||||||
very near future. [ More on this next time ].
|
|
||||||
|
|
||||||
@node User Problems, legalities, evolution, Top
|
@node User Problems, legalities, evolution, Top
|
||||||
@chapter User Problems
|
@chapter User Problems
|
||||||
|
|
||||||
|
@ -1620,8 +1708,11 @@ another manual @file{libio/iostream.texi} describing the iostreams
|
||||||
implementation.
|
implementation.
|
||||||
@item
|
@item
|
||||||
While there is no libg++-specific document describing the STL
|
While there is no libg++-specific document describing the STL
|
||||||
implementation, SGI's web site, at @file{http://www.sgi.com/Technology/STL/},
|
implementation, SGI's web site, at
|
||||||
is an excellent resource.
|
@file{http://www.sgi.com/Technology/STL/}, is an excellent resource.
|
||||||
|
Note that the SGI version of STL is the one that is included with the
|
||||||
|
egcs and 2.8.0 (when it occurs) releases of g++.
|
||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node templates, undefined templates, documentation, User Problems
|
@node templates, undefined templates, documentation, User Problems
|
||||||
|
|
Loading…
Reference in New Issue