<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk03.html" title="" /><link rel="prev" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="faq"></a>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright © 
      2008-2023
     
      <a class="link" href="https://www.fsf.org" target="_top">FSF</a>
    </p></div></div><hr /></div><div class="qandaset"><a id="faq.faq"></a><dl><dt></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what">
      What is libstdc++?
    </a></dt><dt>1.2. <a href="faq.html#faq.why">
      Why should I use libstdc++?
    </a></dt><dt>1.3. <a href="faq.html#faq.who">
      Who's in charge of it?
    </a></dt><dt>1.4. <a href="faq.html#faq.when">
      When is libstdc++ going to be finished?
    </a></dt><dt>1.5. <a href="faq.html#faq.how">
      How do I contribute to the effort?
    </a></dt><dt>1.6. <a href="faq.html#faq.whereis_old">
      What happened to the older libg++? I need that!
    </a></dt><dt>1.7. <a href="faq.html#faq.more_questions">
      What if I have more questions?
    </a></dt></dl></dd><dt></dt><dd><dl><dt>2.1. <a href="faq.html#faq.license.what">
      What are the license terms for libstdc++?
    </a></dt><dt>2.2. <a href="faq.html#faq.license.any_program">
      So any program which uses libstdc++ falls under the GPL?
    </a></dt><dt>2.3. <a href="faq.html#faq.license.lgpl">
      How is that different from the GNU {Lesser,Library} GPL?
    </a></dt><dt>2.4. <a href="faq.html#faq.license.what_restrictions">
      I see. So, what restrictions are there on programs that use the library?
    </a></dt></dl></dd><dt></dt><dd><dl><dt>3.1. <a href="faq.html#faq.how_to_install">How do I install libstdc++?
    </a></dt><dt>3.2. <a href="faq.html#faq.how_to_get_sources">How does one get current libstdc++ sources?
    </a></dt><dt>3.3. <a href="faq.html#faq.how_to_test">How do I know if it works?
    </a></dt><dt>3.4. <a href="faq.html#faq.how_to_set_paths">How do I insure that the dynamically linked library will be found?
    </a></dt><dt>3.5. <a href="faq.html#faq.what_is_libsupcxx">
      What's libsupc++?
    </a></dt><dt>3.6. <a href="faq.html#faq.size">
      This library is HUGE!
    </a></dt></dl></dd><dt></dt><dd><dl><dt>4.1. <a href="faq.html#faq.other_compilers">
      Can libstdc++ be used with non-GNU compilers?
    </a></dt><dt>4.2. <a href="faq.html#faq.solaris_long_long">
      No 'long long' type on Solaris?
    </a></dt><dt>4.3. <a href="faq.html#faq.predefined">
      _XOPEN_SOURCE and _GNU_SOURCE are always defined?
    </a></dt><dt>4.4. <a href="faq.html#faq.darwin_ctype">
      Mac OS X ctype.h is broken! How can I fix it?
    </a></dt><dt>4.5. <a href="faq.html#faq.threads_i386">
      Threading is broken on i386?
    </a></dt><dt>4.6. <a href="faq.html#faq.atomic_mips">
      MIPS atomic operations
    </a></dt><dt>4.7. <a href="faq.html#faq.linux_glibc">
      Recent GNU/Linux glibc required?
    </a></dt><dt>4.8. <a href="faq.html#faq.freebsd_wchar">
      Can't use wchar_t/wstring on FreeBSD
    </a></dt></dl></dd><dt></dt><dd><dl><dt>5.1. <a href="faq.html#faq.what_works">
      What works already?
    </a></dt><dt>5.2. <a href="faq.html#faq.standard_bugs">
      Bugs in the ISO C++ language or library specification
    </a></dt><dt>5.3. <a href="faq.html#faq.compiler_bugs">
      Bugs in the compiler (gcc/g++) and not libstdc++
    </a></dt></dl></dd><dt></dt><dd><dl><dt>6.1. <a href="faq.html#faq.stream_reopening_fails">
      Reopening a stream fails
    </a></dt><dt>6.2. <a href="faq.html#faq.wefcxx_verbose">
      -Weffc++ complains too much
    </a></dt><dt>6.3. <a href="faq.html#faq.ambiguous_overloads">
      Ambiguous overloads after including an old-style header
    </a></dt><dt>6.4. <a href="faq.html#faq.v2_headers">
      The g++-3 headers are not ours
    </a></dt><dt>6.5. <a href="faq.html#faq.boost_concept_checks">
      Errors about *Concept and
      constraints in the STL
    </a></dt><dt>6.6. <a href="faq.html#faq.dlopen_crash">
      Program crashes when using library code in a
      dynamically-loaded library
    </a></dt><dt>6.7. <a href="faq.html#faq.memory_leaks">
      “Memory leaks” in libstdc++
    </a></dt><dt>6.8. <a href="faq.html#faq.list_size_on">
      list::size() is O(n)!
    </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix">
      Aw, that's easy to fix!
    </a></dt></dl></dd><dt></dt><dd><dl><dt>7.1. <a href="faq.html#faq.iterator_as_pod">
      string::iterator is not char*;
      vector&lt;T&gt;::iterator is not T*
    </a></dt><dt>7.2. <a href="faq.html#faq.what_is_next">
      What's next after libstdc++?
    </a></dt><dt>7.3. <a href="faq.html#faq.sgi_stl">
      What about the STL from SGI?
    </a></dt><dt>7.4. <a href="faq.html#faq.extensions_and_backwards_compat">
      Extensions and Backward Compatibility
    </a></dt><dt>7.5. <a href="faq.html#faq.tr1_support">
      Does libstdc++ support TR1?
    </a></dt><dt>7.6. <a href="faq.html#faq.get_iso_cxx">How do I get a copy of the ISO C++ Standard?
    </a></dt><dt>7.7. <a href="faq.html#faq.what_is_abi">
      What's an ABI and why is it so messy?
    </a></dt><dt>7.8. <a href="faq.html#faq.size_equals_capacity">
      How do I make std::vector&lt;T&gt;::capacity() == std::vector&lt;T&gt;::size?
    </a></dt></dl></dd></dl><table border="0" style="width: 100%;"><colgroup><col align="left" width="1%" /><col /></colgroup><tbody><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>1.1. <a href="faq.html#faq.what">
      What is libstdc++?
    </a></dt><dt>1.2. <a href="faq.html#faq.why">
      Why should I use libstdc++?
    </a></dt><dt>1.3. <a href="faq.html#faq.who">
      Who's in charge of it?
    </a></dt><dt>1.4. <a href="faq.html#faq.when">
      When is libstdc++ going to be finished?
    </a></dt><dt>1.5. <a href="faq.html#faq.how">
      How do I contribute to the effort?
    </a></dt><dt>1.6. <a href="faq.html#faq.whereis_old">
      What happened to the older libg++? I need that!
    </a></dt><dt>1.7. <a href="faq.html#faq.more_questions">
      What if I have more questions?
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.what"></a><a id="faq.what.q"></a><p><strong>1.1.</strong></p></td><td align="left" valign="top"><p>
      What is libstdc++?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="faq.what.a"></a></td><td align="left" valign="top"><p>
     The GNU Standard C++ Library v3 is an ongoing project to
     implement the ISO 14882 C++ Standard Library as described in
     clauses 20 through 33 and annex D (prior to the 2017 standard
     the library clauses started with 17).  For those who want to see
     exactly how far the project has come, or just want the latest
     bleeding-edge code, the up-to-date source can be cloned via
     <a class="link" href="https://gcc.gnu.org/git.html" target="_top">Git</a>.
    </p><p>
    N.B. The library is called libstdc++ <span class="emphasis"><em>not</em></span> stdlibc++.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.why"></a><a id="q-why"></a><p><strong>1.2.</strong></p></td><td align="left" valign="top"><p>
      Why should I use libstdc++?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-why"></a></td><td align="left" valign="top"><p>
    The completion of the initial ISO C++ standardization effort gave the C++
    community a powerful set of reuseable tools in the form of the C++
    Standard Library.  However, for several years C++ implementations were
    (as the Draft Standard used to say) <span class="quote">“<span class="quote">incomplet and
    incorrekt</span>”</span>, and many suffered from limitations of the compilers
    that used them.
    </p><p>
    The GNU compiler collection
    (<span class="command"><strong>gcc</strong></span>, <span class="command"><strong>g++</strong></span>, etc) is widely
    considered to be one of the leading compilers in the world.  Its
    development is overseen by the
    <a class="link" href="https://gcc.gnu.org/" target="_top">GCC team</a>.
    All of the rapid development and near-legendary portability
    that are the hallmarks of an open-source project are applied to libstdc++.
    </p><p>
    All of the standard classes and functions from C++98/C++03, C++11 and C++14
    (such as <code class="classname">string</code>,
    <code class="classname">vector&lt;&gt;</code>, iostreams, algorithms etc.)
    are freely available and attempt to be fully compliant.
    Work is ongoing to complete support for the current revision of the
    ISO C++ Standard.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.who"></a><a id="q-who"></a><p><strong>1.3.</strong></p></td><td align="left" valign="top"><p>
      Who's in charge of it?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-who"></a></td><td align="left" valign="top"><p>
     The libstdc++ project is contributed to by several developers
     all over the world, in the same way as GCC or the Linux kernel.
     The current maintainers are listed in the
     <a class="link" href="https://gcc.gnu.org/cgit/gcc/tree/MAINTAINERS" target="_top"><code class="filename">MAINTAINERS</code></a>
     file (look for "c++ runtime libs").
    </p><p>
    Development and discussion is held on the libstdc++ mailing
    list.  Subscribing to the list, or searching the list
    archives, is open to everyone.  You can read instructions for
    doing so on the <a class="link" href="https://gcc.gnu.org/lists.html" target="_top">GCC mailing lists</a> page.
    If you have questions, ideas, code, or are just curious, sign up!
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.when"></a><a id="q-when"></a><p><strong>1.4.</strong></p></td><td align="left" valign="top"><p>
      When is libstdc++ going to be finished?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-when"></a></td><td align="left" valign="top"><p>
    Nathan Myers gave the best of all possible answers, responding to
    a Usenet article asking this question: <span class="emphasis"><em>Sooner, if you
    help.</em></span>
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how"></a><a id="q-how"></a><p><strong>1.5.</strong></p></td><td align="left" valign="top"><p>
      How do I contribute to the effort?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how"></a></td><td align="left" valign="top"><p>
    See the <a class="link" href="manual/appendix_contributing.html" title="Appendix A.  Contributing">Contributing</a> section in
    the manual. Subscribing to the mailing list (see above, or
    the homepage) is a very good idea if you have something to
    contribute, or if you have spare time and want to
    help. Contributions don't have to be in the form of source code;
    anybody who is willing to help write documentation, for example,
    or has found a bug in code that we all thought was working and is
    willing to provide details, is more than welcome!
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.whereis_old"></a><a id="q-whereis_old"></a><p><strong>1.6.</strong></p></td><td align="left" valign="top"><p>
      What happened to the older libg++? I need that!
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-whereis_old"></a></td><td align="left" valign="top"><p>
    The last libg++ README states
    <span class="quote">“<span class="quote">This package is considered obsolete and is no longer
    being developed.</span>”</span>
    It should not be used for new projects, and won't even compile with
    recent releases of GCC (or most other C++ compilers).
    </p><p>
    More information can be found in the
    <a class="link" href="manual/backwards.html" title="Backwards Compatibility">Backwards
    Compatibility</a> section of the libstdc++ manual.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.more_questions"></a><a id="q-more_questions"></a><p><strong>1.7.</strong></p></td><td align="left" valign="top"><p>
      What if I have more questions?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-more_questions"></a></td><td align="left" valign="top"><p>
    If you have read the documentation, and your question remains
    unanswered, then just ask the mailing list. At present, you do not
    need to be subscribed to the list to send a message to it.  More
    information is available on the homepage (including how to browse
    the list archives); to send a message to the list,
    use <code class="email">&lt;<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>&gt;</code>.
    </p><p>
    If you have a question that you think should be included
    here, or if you have a question <span class="emphasis"><em>about</em></span> a question/answer
    here, please send email to the libstdc++ mailing list, as above.
    </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>2.1. <a href="faq.html#faq.license.what">
      What are the license terms for libstdc++?
    </a></dt><dt>2.2. <a href="faq.html#faq.license.any_program">
      So any program which uses libstdc++ falls under the GPL?
    </a></dt><dt>2.3. <a href="faq.html#faq.license.lgpl">
      How is that different from the GNU {Lesser,Library} GPL?
    </a></dt><dt>2.4. <a href="faq.html#faq.license.what_restrictions">
      I see. So, what restrictions are there on programs that use the library?
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.what"></a><a id="q-license.what"></a><p><strong>2.1.</strong></p></td><td align="left" valign="top"><p>
      What are the license terms for libstdc++?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what"></a></td><td align="left" valign="top"><p>
    See <a class="link" href="manual/license.html" title="License">our license description</a>
    for these and related questions.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.any_program"></a><a id="q-license.any_program"></a><p><strong>2.2.</strong></p></td><td align="left" valign="top"><p>
      So any program which uses libstdc++ falls under the GPL?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.any_program"></a></td><td align="left" valign="top"><p>
     No. The special exception permits use of the library in
     proprietary applications.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.lgpl"></a><a id="q-license.lgpl"></a><p><strong>2.3.</strong></p></td><td align="left" valign="top"><p>
      How is that different from the GNU {Lesser,Library} GPL?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.lgpl"></a></td><td align="left" valign="top"><p>
      The LGPL requires that users be able to replace the LGPL code with a
     modified version; this is trivial if the library in question is a C
     shared library.  But there's no way to make that work with C++, where
     much of the library consists of inline functions and templates, which
     are expanded inside the code that uses the library.  So to allow people
     to replace the library code, someone using the library would have to
     distribute their own source, rendering the LGPL equivalent to the GPL.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.what_restrictions"></a><a id="q-license.what_restrictions"></a><p><strong>2.4.</strong></p></td><td align="left" valign="top"><p>
      I see. So, what restrictions are there on programs that use the library?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what_restrictions"></a></td><td align="left" valign="top"><p>
      None.  We encourage such programs to be released as free software,
     but we won't punish you or sue you if you choose otherwise.
    </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>3.1. <a href="faq.html#faq.how_to_install">How do I install libstdc++?
    </a></dt><dt>3.2. <a href="faq.html#faq.how_to_get_sources">How does one get current libstdc++ sources?
    </a></dt><dt>3.3. <a href="faq.html#faq.how_to_test">How do I know if it works?
    </a></dt><dt>3.4. <a href="faq.html#faq.how_to_set_paths">How do I insure that the dynamically linked library will be found?
    </a></dt><dt>3.5. <a href="faq.html#faq.what_is_libsupcxx">
      What's libsupc++?
    </a></dt><dt>3.6. <a href="faq.html#faq.size">
      This library is HUGE!
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_install"></a><a id="q-how_to_install"></a><p><strong>3.1.</strong></p></td><td align="left" valign="top"><p>How do I install libstdc++?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_install"></a></td><td align="left" valign="top"><p>
    Often libstdc++ comes pre-installed as an integral part of many
    existing GNU/Linux and Unix systems, as well as many embedded
    development tools. It may be necessary to install extra
    development packages to get the headers, or the documentation, or
    the source: please consult your vendor for details.
    </p><p>
    To build and install from the GNU GCC sources, please consult the
    <a class="link" href="manual/setup.html" title="Chapter 2. Setup">setup
    documentation</a> for detailed
    instructions. You may wish to browse those files ahead
    of time to get a feel for what's required.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_get_sources"></a><a id="q-how_to_get_sources"></a><p><strong>3.2.</strong></p></td><td align="left" valign="top"><p>How does one get current libstdc++ sources?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_get_sources"></a></td><td align="left" valign="top"><p>
    Libstdc++ sources for all official releases can be obtained as
    part of the GCC sources, available from various sites and
    mirrors. A full <a class="link" href="https://gcc.gnu.org/mirrors.html" target="_top">list of
    download sites</a> is provided on the main GCC site.
    </p><p>
    Current libstdc++ sources can always be found in the main GCC source
    repository, available using the appropriate version control tool.
    At this time, that tool is <span class="application">Git</span>.
    For more details see the documentation on
    <a class="link" href="https://gcc.gnu.org/git.html" target="_top">using the Git repository</a>.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_test"></a><a id="q-how_to_test"></a><p><strong>3.3.</strong></p></td><td align="left" valign="top"><p>How do I know if it works?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_test"></a></td><td align="left" valign="top"><p>
    Libstdc++ comes with its own validation testsuite, which includes
    conformance testing, regression testing, ABI testing, and
    performance testing. Please consult the
    <a class="link" href="https://gcc.gnu.org/install/test.html" target="_top">testing
    documentation</a> for GCC and
    <a class="link" href="manual/test.html" title="Testing">Testing</a> in the libstdc++
    manual for more details.
    </p><p>
    If you find bugs in the testsuite programs themselves, or if you
    think of a new test program that should be added to the suite,
    <span class="emphasis"><em>please</em></span> write up your idea and send it to the list!
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_set_paths"></a><a id="q-how_to_set_paths"></a><p><strong>3.4.</strong></p></td><td align="left" valign="top"><p>How do I insure that the dynamically linked library will be found?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_set_paths"></a></td><td align="left" valign="top"><p>
    Depending on your platform and library version, the error message might
    be similar to one of the following:
    </p><pre class="screen">
    ./a.out: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

    /usr/libexec/ld-elf.so.1: Shared object "libstdc++.so.6" not found
    </pre><p>
    This doesn't mean that the shared library isn't installed, only
    that the dynamic linker can't find it. When a dynamically-linked
    executable is run the linker finds and loads the required shared
    libraries by searching a pre-configured list of directories. If
    the directory where you've installed libstdc++ is not in this list
    then the libraries won't be found.
    </p><p>
    If you already have an older version of libstdc++ installed then the
    error might look like one of the following instead:
    </p><pre class="screen">
    ./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
    ./a.out: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found
    </pre><p>
    This means the linker found <code class="filename">/usr/lib/libstdc++.so.6</code>
    but that library belongs to an older version of GCC than was used to
    compile and link the program <code class="filename">a.out</code> (or some part
    of it). The program depends on code defined in the newer libstdc++
    that belongs to the newer version of GCC, so the linker must be told
    how to find the newer libstdc++ shared library.
    </p><p>
    The simplest way to fix this is
    to use the <code class="envar">LD_LIBRARY_PATH</code> environment variable,
    which is a colon-separated list of directories in which the linker
    will search for shared libraries:
    </p><pre class="screen"><span class="command"><strong>
    export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
    </strong></span></pre><p>
    Here the shell variable <code class="varname">${prefix}</code> is assumed to contain
    the directory prefix where GCC was installed to. The directory containing
    the library might depend on whether you want the 32-bit or 64-bit copy
    of the library, so for example would be
    <code class="filename">${prefix}/lib64</code> on some systems.
    The exact environment variable to use will depend on your
    platform, e.g. <code class="envar">DYLD_LIBRARY_PATH</code> for Darwin,
    <code class="envar">LD_LIBRARY_PATH_32</code>/<code class="envar">LD_LIBRARY_PATH_64</code>
    for Solaris 32-/64-bit,
    and <code class="envar">SHLIB_PATH</code> for HP-UX.
    </p><p>
    See the man pages for <span class="command"><strong>ld</strong></span>, <span class="command"><strong>ldd</strong></span>
    and <span class="command"><strong>ldconfig</strong></span> for more information. The dynamic
    linker has different names on different platforms but the man page
    is usually called something such as <code class="filename">ld.so</code>,
    <code class="filename">rtld</code> or <code class="filename">dld.so</code>.
    </p><p>
    Using <code class="envar">LD_LIBRARY_PATH</code> is not always the best solution,
    <a class="link" href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic" title="Finding Dynamic or Shared Libraries">Finding Dynamic or Shared
    Libraries</a> in the manual gives some alternatives.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.what_is_libsupcxx"></a><a id="q-what_is_libsupcxx"></a><p><strong>3.5.</strong></p></td><td align="left" valign="top"><p>
      What's libsupc++?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_libsupcxx"></a></td><td align="left" valign="top"><p>
      If the only functions from <code class="filename">libstdc++.a</code>
      which you need are language support functions (those listed in
      <a class="link" href="manual/support.html" title="Chapter 4.  Support">clause 18</a> of the
      standard, e.g., <code class="function">new</code> and
      <code class="function">delete</code>), then try linking against
      <code class="filename">libsupc++.a</code>, which is a subset of
      <code class="filename">libstdc++.a</code>.  (Using <span class="command"><strong>gcc</strong></span>
      instead of <span class="command"><strong>g++</strong></span> and explicitly linking in
      <code class="filename">libsupc++.a</code> via <code class="option">-lsupc++</code>
      for the final link step will do it).  This library contains only
      those support routines, one per object file.  But if you are
      using anything from the rest of the library, such as IOStreams
      or vectors, then you'll still need pieces from
      <code class="filename">libstdc++.a</code>.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.size"></a><a id="q-size"></a><p><strong>3.6.</strong></p></td><td align="left" valign="top"><p>
      This library is HUGE!
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-size"></a></td><td align="left" valign="top"><p>
    Usually the size of libraries on disk isn't noticeable.  When a
    link editor (or simply <span class="quote">“<span class="quote">linker</span>”</span>) pulls things from a
    static archive library, only the necessary object files are copied
    into your executable, not the entire library.  Unfortunately, even
    if you only need a single function or variable from an object file,
    the entire object file is extracted.  (There's nothing unique to C++
    or libstdc++ about this; it's just common behavior, given here
    for background reasons.)
    </p><p>
    Some of the object files which make up
    <code class="filename">libstdc++.a</code> are rather large.
    If you create a statically-linked executable with
    <code class="option">-static</code>, those large object files are suddenly part
    of your executable.  Historically the best way around this was to
    only place a very few functions (often only a single one) in each
    source/object file; then extracting a single function is the same
    as extracting a single <code class="filename">.o</code> file.  For libstdc++ this
    is only possible to a certain extent; the object files in question contain
    template classes and template functions, pre-instantiated, and
    splitting those up causes severe maintenance headaches.
    </p><p>
    On supported platforms, libstdc++ takes advantage of garbage
    collection in the GNU linker to get a result similar to separating
    each symbol into a separate source and object files. On these platforms,
    GNU ld can place each function and variable into its own
    section in a <code class="filename">.o</code> file.  The GNU linker can then perform
    garbage collection on unused sections; this reduces the situation to only
    copying needed functions into the executable, as before, but all
    happens automatically.
    </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>4.1. <a href="faq.html#faq.other_compilers">
      Can libstdc++ be used with non-GNU compilers?
    </a></dt><dt>4.2. <a href="faq.html#faq.solaris_long_long">
      No 'long long' type on Solaris?
    </a></dt><dt>4.3. <a href="faq.html#faq.predefined">
      _XOPEN_SOURCE and _GNU_SOURCE are always defined?
    </a></dt><dt>4.4. <a href="faq.html#faq.darwin_ctype">
      Mac OS X ctype.h is broken! How can I fix it?
    </a></dt><dt>4.5. <a href="faq.html#faq.threads_i386">
      Threading is broken on i386?
    </a></dt><dt>4.6. <a href="faq.html#faq.atomic_mips">
      MIPS atomic operations
    </a></dt><dt>4.7. <a href="faq.html#faq.linux_glibc">
      Recent GNU/Linux glibc required?
    </a></dt><dt>4.8. <a href="faq.html#faq.freebsd_wchar">
      Can't use wchar_t/wstring on FreeBSD
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.other_compilers"></a><a id="q-other_compilers"></a><p><strong>4.1.</strong></p></td><td align="left" valign="top"><p>
      Can libstdc++ be used with non-GNU compilers?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-other_compilers"></a></td><td align="left" valign="top"><p>
    Perhaps.
    </p><p>
    Since the goal of ISO Standardization is for all C++
    implementations to be able to share code, libstdc++ should be
    usable under any ISO-compliant compiler, at least in theory.
    </p><p>
    However, the reality is that libstdc++ is targeted and optimized
    for GCC/G++. This means that often libstdc++ uses specific,
    non-standard features of G++ that are not present in older
    versions of proprietary compilers. It may take as much as a year or two
    after an official release of GCC that contains these features for
    proprietary tools to support these constructs.
    </p><p>
    Recent versions of libstdc++ are known to work with the Clang compiler.
    In the near past, specific released versions of libstdc++ have
    been known to work with versions of the EDG C++ compiler, and
    vendor-specific proprietary C++ compilers such as the Intel ICC
    C++ compiler.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.solaris_long_long"></a><a id="q-solaris_long_long"></a><p><strong>4.2.</strong></p></td><td align="left" valign="top"><p>
      No '<span class="type">long long</span>' type on Solaris?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-solaris_long_long"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
    By default we try to support the C99 <span class="type">long long</span> type.
    This requires that certain functions from your C library be present.
    </p><p>
    Up through release 3.0.2 the platform-specific tests performed by
    libstdc++ were too general, resulting in a conservative approach
    to enabling the <span class="type">long long</span> code paths. The most
    commonly reported platform affected was Solaris.
    </p><p>
    This has been fixed for libstdc++ releases greater than 3.0.3.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.predefined"></a><a id="q-predefined"></a><p><strong>4.3.</strong></p></td><td align="left" valign="top"><p>
      <code class="constant">_XOPEN_SOURCE</code> and <code class="constant">_GNU_SOURCE</code> are always defined?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-predefined"></a></td><td align="left" valign="top"><p>On Solaris, <span class="command"><strong>g++</strong></span> (but not <span class="command"><strong>gcc</strong></span>)
         always defines the preprocessor macro
	 <code class="constant">_XOPEN_SOURCE</code>.  On GNU/Linux, the same happens
         with <code class="constant">_GNU_SOURCE</code>.  (This is not an exhaustive list;
         other macros and other platforms are also affected.)
      </p><p>These macros are typically used in C library headers, guarding new
         versions of functions from their older versions.  The C++98 standard
         library includes the C standard library, but it requires the C90
         version, which for backwards-compatibility reasons is often not the
         default for many vendors.
      </p><p>More to the point, the C++ standard requires behavior which is only
         available on certain platforms after certain symbols are defined.
         Usually the issue involves I/O-related typedefs.  In order to
         ensure correctness, the compiler simply predefines those symbols.
      </p><p>Note that it's not enough to <code class="literal">#define</code> them only when the library is
         being built (during installation).  Since we don't have an 'export'
         keyword, much of the library exists as headers, which means that
         the symbols must also be defined as your programs are parsed and
         compiled.
      </p><p>To see which symbols are defined, look for
         <code class="varname">CPLUSPLUS_CPP_SPEC</code> in
         the gcc config headers for your target (and try changing them to
         see what happens when building complicated code).  You can also run
         <span class="command"><strong>g++ -E -dM -x c++ /dev/null</strong></span> to display
         a list of predefined macros for any particular installation.
      </p><p>This has been discussed on the mailing lists
         <a class="link" href="https://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris" target="_top">quite a bit</a>.
      </p><p>This method is something of a wart.  We'd like to find a cleaner
         solution, but nobody yet has contributed the time.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.darwin_ctype"></a><a id="q-darwin_ctype"></a><p><strong>4.4.</strong></p></td><td align="left" valign="top"><p>
      Mac OS X <code class="filename">ctype.h</code> is broken! How can I fix it?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-darwin_ctype"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
         This was a long-standing bug in the OS X support.  Fortunately, the
         <a class="link" href="https://gcc.gnu.org/ml/gcc/2002-03/msg00817.html" target="_top">patch</a>
	 was quite simple, and well-known.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.threads_i386"></a><a id="q-threads_i386"></a><p><strong>4.5.</strong></p></td><td align="left" valign="top"><p>
      Threading is broken on i386?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-threads_i386"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>Support for atomic integer operations was broken on i386
         platforms.  The assembly code accidentally used opcodes that are
         only available on the i486 and later.  So if you configured GCC
         to target, for example, i386-linux, but actually used the programs
         on an i686, then you would encounter no problems.  Only when
         actually running the code on a i386 will the problem appear.
      </p><p>This is fixed in 3.2.2.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.atomic_mips"></a><a id="q-atomic_mips"></a><p><strong>4.6.</strong></p></td><td align="left" valign="top"><p>
      MIPS atomic operations
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-atomic_mips"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
    The atomic locking routines for MIPS targets requires MIPS II
    and later.  A patch went in just after the 3.3 release to
    make mips* use the generic implementation instead.  You can also
    configure for mipsel-elf as a workaround.
    </p><p>
    The mips*-*-linux* port continues to use the MIPS II routines, and more
    work in this area is expected.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.linux_glibc"></a><a id="q-linux_glibc"></a><p><strong>4.7.</strong></p></td><td align="left" valign="top"><p>
      Recent GNU/Linux glibc required?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-linux_glibc"></a></td><td align="left" valign="top"><p>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
         5.0.1) and later uses localization and formatting code from the system
         C library (glibc) version 2.2.5 which contains necessary bugfixes.
         All GNU/Linux distros make more recent versions available now.
         libstdc++ 4.6.0 and later require glibc 2.3 or later for this
         localization and formatting code.
      </p><p>The guideline is simple:  the more recent the C++ library, the
         more recent the C library.  (This is also documented in the main
         GCC installation instructions.)
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.freebsd_wchar"></a><a id="q-freebsd_wchar"></a><p><strong>4.8.</strong></p></td><td align="left" valign="top"><p>
      Can't use <span class="type">wchar_t</span>/<code class="classname">wstring</code> on FreeBSD
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-freebsd_wchar"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
    Older versions of FreeBSD's C library do not have sufficient
    support for wide character functions, and as a result the
    libstdc++ configury decides that <span class="type">wchar_t</span> support should be
    disabled. In addition, the libstdc++ platform checks that
    enabled <span class="type">wchar_t</span> were quite strict, and not granular
    enough to detect when the minimal support to
    enable <span class="type">wchar_t</span> and C++ library structures
    like <code class="classname">wstring</code> were present. This impacted Solaris,
    Darwin, and BSD variants, and is fixed in libstdc++ versions post 4.1.0.
    </p><p>
    </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>5.1. <a href="faq.html#faq.what_works">
      What works already?
    </a></dt><dt>5.2. <a href="faq.html#faq.standard_bugs">
      Bugs in the ISO C++ language or library specification
    </a></dt><dt>5.3. <a href="faq.html#faq.compiler_bugs">
      Bugs in the compiler (gcc/g++) and not libstdc++
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.what_works"></a><a id="q-what_works"></a><p><strong>5.1.</strong></p></td><td align="left" valign="top"><p>
      What works already?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_works"></a></td><td align="left" valign="top"><p>
    Short answer: Pretty much everything <span class="emphasis"><em>works</em></span>
    except for some corner cases.  Support for localization
    in <code class="classname">locale</code> may be incomplete on some non-GNU
    platforms. Also dependent on the underlying platform is support
    for <span class="type">wchar_t</span> and <span class="type">long long</span> specializations,
    and details of thread support.
    </p><p>
    Long answer: See the implementation status pages for
    <a class="link" href="manual/status.html#status.iso.1998" title="C++ 1998/2003">C++98</a>,
    <a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">TR1</a>,
    <a class="link" href="manual/status.html#status.iso.2011" title="C++ 2011">C++11</a>,
    <a class="link" href="manual/status.html#status.iso.2014" title="C++ 2014">C++14</a>, and
    <a class="link" href="manual/status.html#status.iso.2017" title="C++ 2017">C++17</a>.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.standard_bugs"></a><a id="q-standard_bugs"></a><p><strong>5.2.</strong></p></td><td align="left" valign="top"><p>
      Bugs in the ISO C++ language or library specification
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-standard_bugs"></a></td><td align="left" valign="top"><p>
    Unfortunately, there are some.
    </p><p>
    For those people who are not part of the ISO Library Group
    (i.e., nearly all of us needing to read this page in the first
    place), a public list of the library defects is occasionally
    published on <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/" target="_top">the WG21
    website</a>.
    Many of these issues have resulted in
    <a class="link" href="manual/bugs.html#manual.intro.status.bugs.iso" title="Standard Bugs">code changes in libstdc++</a>.
    </p><p>
    If you think you've discovered a new bug that is not listed,
    please post a message describing your problem to the author of
    the library issues list.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.compiler_bugs"></a><a id="q-compiler_bugs"></a><p><strong>5.3.</strong></p></td><td align="left" valign="top"><p>
      Bugs in the compiler (gcc/g++) and not libstdc++
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-compiler_bugs"></a></td><td align="left" valign="top"><p>
    On occasion, the compiler is wrong. Please be advised that this
    happens much less often than one would think, and avoid jumping to
    conclusions.
    </p><p>
    First, examine the ISO C++ standard. Second, try another compiler
    or an older version of the GNU compilers. Third, you can find more
    information on the libstdc++ and the GCC mailing lists: search
    these lists with terms describing your issue.
    </p><p>
    Before reporting a bug, please examine the
    <a class="link" href="https://gcc.gnu.org/bugs/" target="_top">bugs database</a>, with the
    component set to <span class="quote">“<span class="quote">c++</span>”</span>.
    </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>6.1. <a href="faq.html#faq.stream_reopening_fails">
      Reopening a stream fails
    </a></dt><dt>6.2. <a href="faq.html#faq.wefcxx_verbose">
      -Weffc++ complains too much
    </a></dt><dt>6.3. <a href="faq.html#faq.ambiguous_overloads">
      Ambiguous overloads after including an old-style header
    </a></dt><dt>6.4. <a href="faq.html#faq.v2_headers">
      The g++-3 headers are not ours
    </a></dt><dt>6.5. <a href="faq.html#faq.boost_concept_checks">
      Errors about *Concept and
      constraints in the STL
    </a></dt><dt>6.6. <a href="faq.html#faq.dlopen_crash">
      Program crashes when using library code in a
      dynamically-loaded library
    </a></dt><dt>6.7. <a href="faq.html#faq.memory_leaks">
      “Memory leaks” in libstdc++
    </a></dt><dt>6.8. <a href="faq.html#faq.list_size_on">
      list::size() is O(n)!
    </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix">
      Aw, that's easy to fix!
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.stream_reopening_fails"></a><a id="q-stream_reopening_fails"></a><p><strong>6.1.</strong></p></td><td align="left" valign="top"><p>
      Reopening a stream fails
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-stream_reopening_fails"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
    Prior to GCC 4.0 this was one of the most-reported non-bug reports.
    Executing a sequence like this would fail:
    </p><pre class="programlisting">
    #include &lt;fstream&gt;
    ...
    std::fstream  fs("a_file");
    // .
    // . do things with fs...
    // .
    fs.close();
    fs.open("a_new_file");
    </pre><p>
    All operations on the re-opened <code class="varname">fs</code> would fail, or at
    least act very strangely, especially if <code class="varname">fs</code> reached the
    EOF state on the previous file.
    The original C++98 standard did not specify behavior in this case, and
    the <a class="link" href="manual/bugs.html#manual.bugs.dr22">resolution of DR #22</a> was to
    leave the state flags unchanged on a successful call to
    <code class="function">open()</code>.
    You had to insert a call to <code class="function">fs.clear()</code> between the
    calls to <code class="function">close()</code> and <code class="function">open()</code>,
    and then everything will work as expected.
    <span class="emphasis"><em>Update:</em></span> For GCC 4.0 we implemented the resolution
    of <a class="link" href="manual/bugs.html#manual.bugs.dr409">DR #409</a> and
    <code class="function">open()</code>
    now calls <code class="function">clear()</code> on success.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.wefcxx_verbose"></a><a id="q-wefcxx_verbose"></a><p><strong>6.2.</strong></p></td><td align="left" valign="top"><p>
      -Weffc++ complains too much
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-wefcxx_verbose"></a></td><td align="left" valign="top"><p>
    Many warnings are emitted when <code class="option">-Weffc++</code> is used.  Making
    libstdc++ <code class="option">-Weffc++</code>-clean is not a goal of the project,
    for a few reasons.  Mainly, that option tries to enforce
    object-oriented programming, while the Standard Library isn't
    necessarily trying to be OO. The option also enforces outdated guidelines
    from old editions of the books, and the advice isn't all relevant to
    modern C++ (especially C++11 and later).
    </p><p>
    We do, however, try to have libstdc++ sources as clean as possible. If
    you see some simple changes that pacify <code class="option">-Weffc++</code>
    without other drawbacks, send us a patch.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.ambiguous_overloads"></a><a id="q-ambiguous_overloads"></a><p><strong>6.3.</strong></p></td><td align="left" valign="top"><p>
      Ambiguous overloads after including an old-style header
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-ambiguous_overloads"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
    Another problem is the <code class="literal">rel_ops</code> namespace and the template
    comparison operator functions contained therein.  If they become
    visible in the same namespace as other comparison functions
    (e.g., <span class="quote">“<span class="quote">using</span>”</span> them and the
    <code class="filename">&lt;iterator&gt;</code> header),
    then you will suddenly be faced with huge numbers of ambiguity
    errors.  This was discussed on the mailing list; Nathan Myers
    <a class="link" href="https://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html" target="_top">sums
      things up here</a>.  The collisions with vector/string iterator
    types have been fixed for 3.1.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.v2_headers"></a><a id="q-v2_headers"></a><p><strong>6.4.</strong></p></td><td align="left" valign="top"><p>
      The g++-3 headers are <span class="emphasis"><em>not ours</em></span>
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-v2_headers"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
	If you are using headers in
	<code class="filename">${prefix}/include/g++-3</code>, or if
	the installed library's name looks like
	<code class="filename">libstdc++-2.10.a</code> or
	<code class="filename">libstdc++-libc6-2.10.so</code>, then
	you are using the old libstdc++-v2 library, which is non-standard and
	unmaintained.  Do not report problems with -v2 to the -v3
	mailing list.
      </p><p>
	For GCC versions 3.0 and 3.1 the libstdc++ header files are installed in
	<code class="filename">${prefix}/include/g++-v3</code>
	(see the 'v'?).  Starting with version 3.2 the headers are installed in
	<code class="filename">${prefix}/include/c++/${version}</code>
	as this prevents headers from previous versions being found by mistake.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.boost_concept_checks"></a><a id="q-boost_concept_checks"></a><p><strong>6.5.</strong></p></td><td align="left" valign="top"><p>
      Errors about <span class="emphasis"><em>*Concept</em></span> and
      <span class="emphasis"><em>constraints</em></span> in the STL
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-boost_concept_checks"></a></td><td align="left" valign="top"><p>
    If you see compilation errors containing messages about
    <span class="errortext">foo Concept</span> and something to do with a
    <span class="errortext">constraints</span> member function, then most
    likely you have violated one of the requirements for types used
    during instantiation of template containers and functions.  For
    example, EqualityComparableConcept appears if your types must be
    comparable with == and you have not provided this capability (a
    typo, or wrong visibility, or you just plain forgot, etc).
    </p><p>
    More information, including how to optionally enable/disable the
    checks, is available in the
    <a class="link" href="manual/concept_checking.html" title="Concept Checking">Diagnostics</a>.
    chapter of the manual.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.dlopen_crash"></a><a id="q-dlopen_crash"></a><p><strong>6.6.</strong></p></td><td align="left" valign="top"><p>
      Program crashes when using library code in a
      dynamically-loaded library
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-dlopen_crash"></a></td><td align="left" valign="top"><p>
    If you are using the C++ library across dynamically-loaded
    objects, make certain that you are passing the correct options
    when compiling and linking:
    </p><div class="literallayout"><p><br />
    Compile your library components:<br />
    <span class="command"><strong>g++ -fPIC -c a.cc</strong></span><br />
    <span class="command"><strong>g++ -fPIC -c b.cc</strong></span><br />
    ...<br />
    <span class="command"><strong>g++ -fPIC -c z.cc</strong></span><br />
<br />
    Create your library:<br />
    <span class="command"><strong>g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o</strong></span><br />
<br />
    Link the executable:<br />
    <span class="command"><strong>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</strong></span><br />
    </p></div></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.memory_leaks"></a><a id="q-memory_leaks"></a><p><strong>6.7.</strong></p></td><td align="left" valign="top"><p>
      <span class="quote">“<span class="quote">Memory leaks</span>”</span> in libstdc++
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-memory_leaks"></a></td><td align="left" valign="top"><p>
    Since GCC 5.1.0, libstdc++ automatically allocates a pool
    of a few dozen kilobytes on startup. This pool is used to ensure it's
    possible to throw exceptions (such as <code class="classname">bad_alloc</code>)
    even when <code class="code">malloc</code> is unable to allocate any more memory.
    With some versions of <a class="link" href="https://valgrind.org" target="_top"><span class="command"><strong>valgrind</strong></span></a>
    this pool will be shown as "still reachable" when the process exits, e.g.
    <code class="code">still reachable: 72,704 bytes in 1 blocks</code>.
    This memory is not a leak, because it's still in use by libstdc++,
    and the memory will be returned to the OS when the process exits.
    Later versions of <span class="command"><strong>valgrind</strong></span> know how to free this
    pool as the process exits, and so won't show any "still reachable" memory.
    </p><p>
    In the past, a few people reported that the standard containers appear
    to leak memory when tested with memory checkers such as
    <span class="command"><strong>valgrind</strong></span>.
    Under some (non-default) configurations the library's allocators keep
    free memory in a
    pool for later reuse, rather than deallocating it with <code class="code">delete</code>
    Although this memory is always reachable by the library and is never
    lost, memory debugging tools can report it as a leak.  If you
    want to test the library for memory leaks please read
    <a class="link" href="manual/debug.html#debug.memory" title="Memory Leak Hunting">Tips for memory leak hunting</a>
    first.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.list_size_on"></a><a id="q-list_size_on"></a><p><strong>6.8.</strong></p></td><td align="left" valign="top"><p>
      <code class="code">list::size()</code> is O(n)!
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-list_size_on"></a></td><td align="left" valign="top"><p>
    See
    the <a class="link" href="manual/containers.html" title="Chapter 9.  Containers">Containers</a>
    chapter.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.easy_to_fix"></a><a id="q-easy_to_fix"></a><p><strong>6.9.</strong></p></td><td align="left" valign="top"><p>
      Aw, that's easy to fix!
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-easy_to_fix"></a></td><td align="left" valign="top"><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 class="link" href="https://gcc.gnu.org/contribute.html" target="_top">submitting
    patches</a> that covers the procedure, but for libstdc++ you
    should also send the patch to our mailing list in addition to
    the GCC patches mailing list.  The libstdc++
    <a class="link" href="manual/appendix_contributing.html" title="Appendix A.  Contributing">contributors' page</a>
    also talks about how to submit patches.
    </p><p>
    In addition to the description, the patch, and the ChangeLog
    entry, it is a Good Thing if you can additionally create a small
    test program to test for the presence of the bug that your patch
    fixes.  Bugs have a way of being reintroduced; if an old bug
    creeps back in, it will be caught immediately by the testsuite -
    but only if such a test exists.
    </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>7.1. <a href="faq.html#faq.iterator_as_pod">
      string::iterator is not char*;
      vector&lt;T&gt;::iterator is not T*
    </a></dt><dt>7.2. <a href="faq.html#faq.what_is_next">
      What's next after libstdc++?
    </a></dt><dt>7.3. <a href="faq.html#faq.sgi_stl">
      What about the STL from SGI?
    </a></dt><dt>7.4. <a href="faq.html#faq.extensions_and_backwards_compat">
      Extensions and Backward Compatibility
    </a></dt><dt>7.5. <a href="faq.html#faq.tr1_support">
      Does libstdc++ support TR1?
    </a></dt><dt>7.6. <a href="faq.html#faq.get_iso_cxx">How do I get a copy of the ISO C++ Standard?
    </a></dt><dt>7.7. <a href="faq.html#faq.what_is_abi">
      What's an ABI and why is it so messy?
    </a></dt><dt>7.8. <a href="faq.html#faq.size_equals_capacity">
      How do I make std::vector&lt;T&gt;::capacity() == std::vector&lt;T&gt;::size?
    </a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.iterator_as_pod"></a><a id="faq.iterator_as_pod_q"></a><p><strong>7.1.</strong></p></td><td align="left" valign="top"><p>
      <code class="classname">string::iterator</code> is not <code class="code">char*</code>;
      <code class="classname">vector&lt;T&gt;::iterator</code> is not <code class="code">T*</code>
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="faq.iterator_as_pod_a"></a></td><td align="left" valign="top"><p>
    If you have code that depends on container&lt;T&gt; iterators
    being implemented as pointer-to-T, your code is broken. It's
    considered a feature, not a bug, that libstdc++ points this out.
    </p><p>
    While there are arguments for iterators to be implemented in
    that manner, A) they aren't very good ones in the long term,
    and B) they were never guaranteed by the Standard anyway.  The
    type-safety achieved by making iterators a real class rather
    than a typedef for <span class="type">T*</span> outweighs nearly all opposing
    arguments.
    </p><p>
    Code which does assume that a vector/string iterator <code class="varname">i</code>
    is a pointer can often be fixed by changing <code class="varname">i</code> in
    certain expressions to <code class="varname">&amp;*i</code>.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.what_is_next"></a><a id="q-what_is_next"></a><p><strong>7.2.</strong></p></td><td align="left" valign="top"><p>
      What's next after libstdc++?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_next"></a></td><td align="left" valign="top"><p>
	The goal of libstdc++ is to produce a
	fully-compliant, fully-portable Standard Library.
	While the C++ Standard continues to evolve the libstdc++ will
        continue to track it.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.sgi_stl"></a><a id="q-sgi_stl"></a><p><strong>7.3.</strong></p></td><td align="left" valign="top"><p>
      What about the STL from SGI?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-sgi_stl"></a></td><td align="left" valign="top"><p>
    The STL (Standard Template Library) was the inspiration for large chunks
    of the C++ Standard Library, but the terms are not interchangeable and
    they don't mean the same thing. The C++ Standard Library includes lots of
    things that didn't come from the STL, and some of them aren't even
    templates, such as <code class="classname">std::locale</code> and
    <code class="classname">std::thread</code>.
    </p><p>
    Libstdc++-v3 incorporates a lot of code from
    <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">the SGI STL</a>
    (the final merge was from
    <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/whats_new.html" target="_top">release 3.3</a>).
    The code in libstdc++ contains many fixes and changes compared to the
    original SGI code.
    </p><p>
    In particular, <code class="classname">string</code> is not from SGI and makes no
    use of their "rope" class (although that is included as an optional
    extension), neither is <code class="classname">valarray</code> nor some others.
    Classes like <code class="classname">vector&lt;&gt;</code> were from SGI, but have
    been extensively modified.
    </p><p>
    More information on the evolution of libstdc++ can be found at the
    <a class="link" href="manual/api.html" title="API Evolution and Deprecation History">API
    evolution</a>
    and <a class="link" href="manual/backwards.html" title="Backwards Compatibility">backwards
    compatibility</a> documentation.
    </p><p>
    The <a class="link" href="https://web.archive.org/web/20171104092813/http://www.sgi.com/tech/stl/FAQ.html" target="_top">FAQ</a>
    for SGI's STL is still recommended reading.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.extensions_and_backwards_compat"></a><a id="q-extensions_and_backwards_compat"></a><p><strong>7.4.</strong></p></td><td align="left" valign="top"><p>
      Extensions and Backward Compatibility
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-extensions_and_backwards_compat"></a></td><td align="left" valign="top"><p>
      See the <a class="link" href="manual/backwards.html" title="Backwards Compatibility">link</a> on backwards compatibility and <a class="link" href="manual/api.html" title="API Evolution and Deprecation History">link</a> on evolution.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.tr1_support"></a><a id="q-tr1_support"></a><p><strong>7.5.</strong></p></td><td align="left" valign="top"><p>
      Does libstdc++ support TR1?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-tr1_support"></a></td><td align="left" valign="top"><p>
    Yes.
    </p><p>
    The C++ Standard Library
    <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">
    Technical Report 1</a> added many new features to the library.
    </p><p>
    The implementation status of TR1 in libstdc++ can be tracked
    <a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">on the TR1 status page</a>.
    </p><p>
    New code should probably not use TR1, because almost everything in it has
    been added to the main C++ Standard Library (usually with significant
    improvements).
    The TR1 implementation in libstdc++ is no longer actively maintained.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.get_iso_cxx"></a><a id="q-get_iso_cxx"></a><p><strong>7.6.</strong></p></td><td align="left" valign="top"><p>How do I get a copy of the ISO C++ Standard?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-get_iso_cxx"></a></td><td align="left" valign="top"><p>
    Please refer to the <a class="link" href="manual/appendix_contributing.html" title="Appendix A.  Contributing">Contributing</a>
    section in our manual.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.what_is_abi"></a><a id="q-what_is_abi"></a><p><strong>7.7.</strong></p></td><td align="left" valign="top"><p>
      What's an ABI and why is it so messy?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_abi"></a></td><td align="left" valign="top"><p>
    <acronym class="acronym">ABI</acronym> stands for <span class="quote">“<span class="quote">Application Binary
    Interface</span>”</span>.  Conventionally, it refers to a great
    mass of details about how arguments are arranged on the call
    stack and/or in registers, and how various types are arranged
    and padded in structs.  A single CPU design may suffer
    multiple ABIs designed by different development tool vendors
    who made different choices, or even by the same vendor for
    different target applications or compiler versions.  In ideal
    circumstances the CPU designer presents one ABI and all the
    OSes and compilers use it.  In practice every ABI omits
    details that compiler implementers (consciously or
    accidentally) must choose for themselves.
    </p><p>
    That ABI definition suffices for compilers to generate code so a
    program can interact safely with an OS and its lowest-level libraries.
    Users usually want an ABI to encompass more detail, allowing libraries
    built with different compilers (or different releases of the same
    compiler!) to be linked together.  For C++, this includes many more
    details than for C, and most CPU designers (for good reasons elaborated
    below) have not stepped up to publish C++ ABIs.  Such an ABI has been
    defined for the Itanium architecture (see
    <a class="link" href="https://itanium-cxx-abi.github.io/cxx-abi/" target="_top">C++
    ABI for Itanium</a>) and that is used by G++ and other compilers
    as the de facto standard ABI on many common architectures (including x86).
    G++ can also use the ARM architecture's EABI, for embedded
    systems relying only on a <span class="quote">“<span class="quote">free-standing implementation</span>”</span> that
    doesn't include (much of) the standard library, and the GNU EABI for
    hosted implementations on ARM.  Those ABIs cover low-level details
    such as virtual function implementation, struct inheritance layout,
    name mangling, and exception handling.
   </p><p>
    A useful C++ ABI must also incorporate many details of the standard
    library implementation.  For a C ABI, the layouts of a few structs
    (such as <span class="type">FILE</span>, <span class="type">stat</span>, <span class="type">jmpbuf</span>,
    and the like) and a few macros suffice.
    For C++, the details include the complete set of names of functions
    and types used, the offsets of class members and virtual functions,
    and the actual definitions of all inlines.  C++ exposes many more
    library details to the caller than C does.  It makes defining
    a complete ABI a much bigger undertaking, and requires not just
    documenting library implementation details, but carefully designing
    those details so that future bug fixes and optimizations don't
    force breaking the ABI.
    </p><p>
    There are ways to help isolate library implementation details from the
    ABI, but they trade off against speed.  Library details used in inner
    loops (e.g., <code class="function">getchar</code>) must be exposed and frozen for
    all time, but many others may reasonably be kept hidden from user code,
    so they may later be changed.  Deciding which, and implementing
    the decisions, must happen before you can reasonably document a
    candidate C++ ABI that encompasses the standard library.
    </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.size_equals_capacity"></a><a id="q-size_equals_capacity"></a><p><strong>7.8.</strong></p></td><td align="left" valign="top"><p>
      How do I make <code class="code">std::vector&lt;T&gt;::capacity() == std::vector&lt;T&gt;::size</code>?
    </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-size_equals_capacity"></a></td><td align="left" valign="top"><p>
    Since C++11 just call the <code class="function">shrink_to_fit()</code> member
    function.
    </p><p>
    Before C++11, the standard idiom for deallocating a
    <code class="classname">vector&lt;T&gt;</code>'s
    unused memory was to create a temporary copy of the vector and swap their
    contents, e.g. for <code class="classname">vector&lt;T&gt; v</code>
    </p><div class="literallayout"><p><br />
     std::vector&lt;T&gt;(v).swap(v);<br />
    </p></div><p>
    The copy will take O(n) time and the swap is constant time.
    </p><p>
    See <a class="link" href="manual/strings.html#strings.string.shrink" title="Shrink to Fit">Shrink-to-fit
    strings</a> for a similar solution for strings.
    </p></td></tr></tbody></table></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk03.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>