<?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>Configure</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, configure, options" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="setup.html" title="Chapter 2. Setup" /><link rel="next" href="make.html" title="Make" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configure</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.configure"></a>Configure</h2></div></div></div><p>
  When configuring libstdc++, you'll have to configure the entire
  <span class="emphasis"><em>gccsrcdir</em></span> directory. Consider using the
  toplevel gcc configuration option
  <code class="literal">--enable-languages=c++</code>, which saves time by only
  building the C++ toolchain.
</p><p>
  Here are all of the configure options specific to libstdc++.  Keep
  in mind that
   
   <a class="link" href="http://sourceware.org/autobook/autobook/autobook_14.html" target="_top">they
   all have opposite forms as well</a> (enable/disable and
   with/without).  The defaults are for the <span class="emphasis"><em>current
   development sources</em></span>, which may be different than those
   for released versions.
</p><p>The canonical way to find out the configure options that are
   available for a given set of libstdc++ sources is to go to the
   source directory and then type: <span class="command"><strong>./configure --help</strong></span>.
</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">--enable-multilib</code>[default]</span></dt><dd><p>This is part of the generic multilib support for building cross
	compilers.  As such, targets like "powerpc-elf" will have
	libstdc++ built many different ways:  "-msoft-float"
	and not, etc.  A different libstdc++ will be built for each of
	the different multilib versions.  This option is on by default.
     </p></dd><dt><span class="term"><code class="code">--enable-version-specific-runtime-libs</code></span></dt><dd><p>Specify that run-time libraries should be installed in the
	compiler-specific subdirectory (i.e.,
	<code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}</code>)
	instead of <code class="code">${libdir}</code>.  This option is useful if you
	intend to use several versions of gcc in parallel.  In addition,
	libstdc++'s include files will be installed in
	<code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>,
	unless you also specify
       <code class="literal">--with-gxx-include-dir=</code><code class="filename">dirname</code> during configuration.
     </p></dd><dt><span class="term"><code class="code">--with-gxx-include-dir=&lt;include-files dir&gt;</code></span></dt><dd><p>Adds support for named libstdc++ include directory.  For instance,
	the following puts all the libstdc++ headers into a directory
	called "4.4-20090404" instead of the usual
	"c++/(version)".
     </p><pre class="programlisting">
   --with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404</pre></dd><dt><span class="term"><code class="code">--enable-cstdio</code></span></dt><dd><p>This is an abbreviated form of <code class="code">'--enable-cstdio=stdio'</code>
	(described next).
     </p></dd><dt><span class="term"><code class="code">--enable-cstdio=OPTION</code></span></dt><dd><p>Select a target-specific I/O package. The choices are 'stdio'
       which is a generic abstraction using POSIX file I/O APIs
       (<code class="function">read</code>, <code class="function">write</code>,
       <code class="function">lseek</code>, etc.), and 'stdio_pure' which is similar
       but only uses standard C file I/O APIs (<code class="function">fread</code>,
       <code class="function">fwrite</code>, <code class="function">fseek</code>, etc.).
       The 'stdio_posix' choice is a synonym for 'stdio'.
       The default is 'stdio'. This option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-clocale</code></span></dt><dd><p>This is an abbreviated form of <code class="code">'--enable-clocale=generic'</code>
	(described next).
     </p></dd><dt><span class="term"><code class="code">--enable-clocale=OPTION</code></span></dt><dd><p>Select a target-specific underlying locale package.  The
	choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix
	(IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets,
	'gnu' to specify a model based on functionality from the GNU C
	library (langinfo/iconv/gettext) (from <a class="link" href="https://www.gnu.org/software/libc/" target="_top">glibc</a>, the GNU C
	library), 'generic' to use a generic "C" abstraction which consists
	of "C" locale info, 'newlib' to specify the Newlib C library model
	which only differs from the 'generic' model in the handling of
	ctype, or 'darwin' which omits the <span class="type">wchar_t</span> specializations
	needed by the 'generic' model.
     </p><p>If not explicitly specified, the configure process tries
      to guess the most suitable package from the choices above. The
      default is 'generic'. On glibc-based systems of sufficient
      vintage (2.3 and newer), 'gnu' is automatically selected. On newlib-based
      systems (<code class="code">'--with_newlib=yes'</code>) and OpenBSD, 'newlib' is
      automatically selected. On Mac OS X 'darwin' is automatically selected.
      This option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-allocator</code></span></dt><dd><p>This is an abbreviated form of
	<code class="code">'--enable-libstdcxx-allocator=auto'</code> (described
	next).
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-allocator=OPTION  </code></span></dt><dd><p>Select a target-specific underlying std::allocator.  The
	choices are 'new' to specify a wrapper for new, and 'malloc' to
	specify a wrapper for malloc.
	See <a class="xref" href="memory.html#allocator.ext" title="Extension Allocators">the section called “Extension Allocators”</a> for more information.
	This option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-cheaders=OPTION</code></span></dt><dd><p>This allows the user to define the approach taken for C header
	compatibility with C++. Options are c, c_std, and c_global.
	These correspond to the source directory's include/c,
	include/c_std, and include/c_global, and may also include
	include/c_compatibility.  The default is 'c_global'.
     </p></dd><dt><span class="term"><code class="code">--enable-threads</code></span></dt><dd><p>This is an abbreviated form of <code class="code">'--enable-threads=yes'</code>
	(described next).
     </p></dd><dt><span class="term"><code class="code">--enable-threads=OPTION</code></span></dt><dd><p>Select a threading library.  A full description is
	given in the
	general <a class="link" href="http://gcc.gnu.org/install/configure.html" target="_top">compiler
	configuration instructions</a>. This option can change the
	library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-threads</code></span></dt><dd><p>Enable C++11 threads support.  If not explicitly specified,
        the  configure process enables it if possible.  This
	option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time</code></span></dt><dd><p>This is an abbreviated form of
	<code class="code">'--enable-libstdcxx-time=yes'</code>(described next).
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time=OPTION</code></span></dt><dd><p>Enables link-type checks for the availability of the
	<code class="function">clock_gettime</code> clocks, used in the implementation
	of [time.clock], and of the <code class="function">nanosleep</code> and
	<code class="function">sched_yield</code> functions, used in the
	implementation of [thread.thread.this] of the 2011 ISO C++ standard.
	The choice OPTION=yes checks for the availability of the facilities
	in libc.  OPTION=rt also checks in
	librt (and, if it's needed, links to it).  Note that linking to librt
	is not always desirable because for glibc it requires linking to
	libpthread too, which causes all reference counting to use atomic
	operations, resulting in a potentially large overhead for
	single-threaded programs.  OPTION=no skips the tests completely.
	The default is OPTION=auto, which skips the checks and enables the
	features only for targets known to support them.
	For Linux targets, if <code class="function">clock_gettime</code> is not used
	then the [time.clock] implementation will use a system call to access
	the realtime and monotonic clocks, which is significantly slower than
	the C library's <code class="function">clock_gettime</code> function.
    </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-debug</code></span></dt><dd><p>Build separate debug libraries in addition to what is normally built.
	By default, the debug libraries are compiled with
	<code class="code"> CXXFLAGS='-g3 -O0 -fno-inline'</code>
	, are installed in <code class="code">${libdir}/debug</code>, and have the
	same names and versioning information as the non-debug
	libraries. This option is off by default.
     </p><p>Note this make command, executed in
	the build directory, will do much the same thing, without the
	configuration difference and without building everything twice:
	<code class="code">make CXXFLAGS='-g3 -O0 -fno-inline' all</code>
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-debug-flags=FLAGS</code></span></dt><dd><p>This option is only valid when
	<code class="code">--enable-libstdcxx-debug</code>
	is also specified, and applies to the debug builds only. With
	this option, you can pass a specific string of flags to the
	compiler to use when building the debug versions of libstdc++.
	FLAGS is a quoted string of options, like
     </p><pre class="programlisting">
  --enable-libstdcxx-debug-flags='-g3 -O1 -fno-inline'</pre></dd><dt><span class="term"><code class="code">--enable-cxx-flags=FLAGS</code></span></dt><dd><p>With this option, you can pass a string of -f (functionality)
	flags to the compiler to use when building libstdc++. This
	option can change the library ABI. FLAGS is a quoted string of
	options, like
     </p><pre class="programlisting">
  --enable-cxx-flags='-fvtable-gc -fomit-frame-pointer -ansi'</pre><p>
	Note that the flags don't necessarily have to all be -f flags,
	as shown, but usually those are the ones that will make sense
	for experimentation and configure-time overriding.
     </p><p>The advantage of --enable-cxx-flags over setting CXXFLAGS in
	the 'make' environment is that, if files are automatically
	rebuilt, the same flags will be used when compiling those files
	as well, so that everything matches.
     </p><p>Fun flags to try might include combinations of
     </p><pre class="programlisting">
  -fstrict-aliasing
  -fno-exceptions
  -ffunction-sections
  -fvtable-gc</pre><p>and opposite forms (-fno-) of the same.  Tell us (the libstdc++
	mailing list) if you discover more!
     </p></dd><dt><span class="term"><code class="code">--enable-c99</code></span></dt><dd><p>The <span class="type">long long</span> type was introduced in C99, along
	with many other functions for wide characters, and math
	classification macros, etc.  If enabled, all C99 functions not
	specified by the C++ standard will be put into <code class="code">namespace
	__gnu_cxx</code>, and then all these names will
	be injected into namespace std, so that C99 functions can be
	used "as if" they were in the C++ standard (as they
	will eventually be in some future revision of the standard,
	without a doubt).  By default, C99 support is on, assuming the
	configure probes find all the necessary functions and bits
	necessary. This option can change the library ABI.
    </p></dd><dt><span class="term"><code class="code">--enable-wchar_t</code>[default]</span></dt><dd><p>Template specializations for the <span class="type">wchar_t</span> type are
	required for wide character conversion support.  Disabling
	wide character specializations may be expedient for initial
	porting efforts, but builds only a subset of what is required by
	ISO, and is not recommended.  By default, this option is on.
	This option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-long-long  </code></span></dt><dd><p>The <span class="type">long long</span> type was introduced in C99.  It is
	provided as a GNU extension to C++98 in g++.  This flag builds
	support for "long long" into the library (specialized
	templates and the like for iostreams).  This option is on by default:
	if enabled, users will have to either use the new-style "C"
	headers by default (i.e., &lt;cmath&gt; not &lt;math.h&gt;)
	or add appropriate compile-time flags to all compile lines to
	allow "C" visibility of this feature (on GNU/Linux,
	the flag is -D_ISOC99_SOURCE, which is added automatically via
	CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE).
	This option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-fully-dynamic-string</code></span></dt><dd><p>This option enables a special version of basic_string avoiding
	the optimization that allocates empty objects in static memory.
	Mostly useful together with shared memory allocators, see PR
	libstdc++/16612 for details.
     </p></dd><dt><span class="term"><code class="code">--enable-concept-checks</code></span></dt><dd><p>This turns on additional compile-time checks for instantiated
	library templates, in the form of specialized templates described in
        the <a class="link" href="concept_checking.html" title="Concept Checking">Concept
        Checking</a> section.  They
	can help users discover when they break the rules of the STL, before
	their programs run. These checks are based on C++03 rules and some of
	them are not compatible with correct C++11 code.
     </p></dd><dt><span class="term"><code class="code">--enable-symvers[=style]</code></span></dt><dd><p>In 3.1 and later, tries to turn on symbol versioning in the
	shared library (if a shared library has been
	requested). Values for 'style' that are currently supported
	are 'gnu', 'gnu-versioned-namespace', 'darwin',
	'darwin-export', and 'sun'. Both gnu- options require that a recent
	version of the GNU linker be in use. Both darwin options are
	equivalent. With no style given, the configure script will try
	to guess correct defaults for the host system, probe to see if
	additional requirements are necessary and present for
	activation, and if so, will turn symbol versioning on. This
	option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-visibility</code></span></dt><dd><p> In 4.2 and later, enables or disables visibility
        attributes. If enabled (as by default), and the compiler seems
        capable of passing the simple sanity checks thrown at it, adjusts
        items in namespace std, namespace std::tr1, namespace std::tr2,
        and namespace __gnu_cxx to have <code class="code">visibility ("default")</code>
        so that -fvisibility options can be used without affecting the
        normal external-visibility of namespace std entities.
        Prior to 4.7 this option was spelled <code class="code">--enable-visibility</code>.
    </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-pch</code></span></dt><dd><p>In 3.4 and later, tries to turn on the generation of
	stdc++.h.gch, a pre-compiled file including all the standard
	C++ includes. If enabled (as by default), and the compiler
	seems capable of passing the simple sanity checks thrown at
	it, try to build stdc++.h.gch as part of the make process.
	In addition, this generated file is used later on (by appending
	<code class="code">-include bits/stdc++.h</code> to CXXFLAGS) when running the
	testsuite.
     </p></dd><dt><span class="term"><code class="code">--enable-extern-template</code>[default]</span></dt><dd><p>Use extern template to pre-instantiate all required
 	specializations for certain types defined in the standard libraries.
	These types include <code class="classname">string</code> and dependents like
	<code class="classname">char_traits</code>, the templatized IO classes,
	<code class="classname">allocator</code>, and others.
	Disabling means that implicit
	template generation will be used when compiling these types.  By
	default, this option is on. This option can change the library ABI.
     </p></dd><dt><span class="term"><code class="code">--disable-hosted-libstdcxx</code></span></dt><dd><p>
     By default, a complete <span class="emphasis"><em>hosted</em></span> C++ library is
     built.  The C++ Standard also describes a
     <span class="emphasis"><em>freestanding</em></span> environment, in which only a
     minimal set of headers are provided.  This option builds such an
     environment.  Note that a hosted library installs headers that still can
     be used in non hosted environments, as the library checks for
     <code class="code">__STDC_HOSTED__</code>, however, a library configured with
     <code class="code">--disable-hosted-libstdcxx</code> will not install unusable headers.
     </p></dd><dt><span class="term"><code class="code">--disable-libstdcxx-hosted</code></span></dt><dd><p>This is an alias for <code class="code">--disable-hosted-libstdcxx</code>.</p></dd><dt><span class="term"><code class="code">--disable-libstdcxx-verbose</code></span></dt><dd><p>
     By default, the library is configured to write descriptive messages
     to standard error for certain events such as calling a pure virtual
     function or the invocation of the standard terminate handler.  Those
     messages cause the library to depend on the demangler and standard I/O
     facilities, which might be undesirable in a low-memory environment or
     when standard error is not available.  This option disables those
     messages.  This option does not change the library ABI.
   </p></dd><dt><span class="term"><code class="code">--disable-libstdcxx-dual-abi</code></span></dt><dd><p>
     Disable support for the new, C++11-conforming implementations of
     <code class="code">std::string</code>, <code class="code">std::list</code> etc. so that the
     library only provides definitions of types using the old ABI
     (see <a class="xref" href="using_dual_abi.html" title="Dual ABI">Dual ABI</a>).
     This option changes the library ABI.
   </p></dd><dt><span class="term"><code class="code">--with-default-libstdcxx-abi=</code><em class="replaceable"><code>OPTION</code></em></span></dt><dd><p>
     Set the default value for the <span class="symbol">_GLIBCXX_USE_CXX11_ABI</span>
     macro (see <a class="xref" href="using_macros.html" title="Macros">Macros</a>).
     The default is <code class="option">OPTION=new</code> which sets the macro to
     <code class="literal">1</code>,
     use <code class="option">OPTION=gcc4-compatible</code> to set it to
     <code class="literal">0</code>.
     This option does not change the library ABI.
   </p></dd><dt><span class="term"><code class="code">--with-libstdcxx-lock-policy=OPTION</code></span></dt><dd><p>Sets the lock policy that controls how
        <code class="classname">shared_ptr</code> reference counting is
        synchronized.
        The choice OPTION=atomic enables use of atomics for updates to
        <code class="classname">shared_ptr</code> reference counts.
        The choice OPTION=mutex enables use of a mutex to synchronize updates
        to <code class="classname">shared_ptr</code> reference counts.
        If the compiler's thread model is "single" then this option has no
        effect, as no synchronization is used for the reference counts.
	The default is OPTION=auto, which checks for the availability of
        compiler built-ins for 2-byte and 4-byte atomic compare-and-swap,
        and uses OPTION=atomic if they're available, OPTION=mutex otherwise.
        This option can change the library ABI.
        If the library is configured to use atomics and user programs are
        compiled using a target that doesn't natively support the atomic
        operations (e.g. the library is configured for armv7 and then code
        is compiled with <code class="option">-march=armv5t</code>) then the program
        might rely on support in libgcc to provide the atomics.
    </p></dd><dt><span class="term"><code class="code">--enable-vtable-verify</code>[default]</span></dt><dd><p>Use <code class="code">-fvtable-verify=std</code> to compile the C++
    runtime with instrumentation for vtable verification. All virtual
    functions in the standard library will be verified at runtime.
    Types impacted include <code class="classname">locale</code> and
    <code class="classname">iostream</code>, and others.  Disabling means that
    the C++ runtime is compiled without support for vtable
    verification. By default, this option is off.
     </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-filesystem-ts</code>[default]</span></dt><dd><p>Build <code class="filename">libstdc++fs.a</code> as well
      as the usual libstdc++ and libsupc++ libraries. This is enabled by
      default on select POSIX targets where it is known to work and disabled
      otherwise.
    </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-static-eh-pool</code></span></dt><dd><p>Use a fixed-size static buffer for the emergency exception handling
      pool (see <a class="xref" href="using_exceptions.html#intro.using.exception.alloc" title="Memory allocation">Memory allocation for exceptions</a>). The default
      is to allocate the pool on program startup using <code class="code">malloc</code>.
      With this option, a static buffer will be provided by libstdc++ instead.
      This does not change the library ABI.
    </p></dd><dt><span class="term"><code class="code">--with-libstdcxx-eh-pool-obj-count=NUM</code></span></dt><dd><p>Set the size of the emergency exception handling pool. NUM is the
      number of simultaneous allocated exceptions to support.
      This does not change the library ABI.
    </p></dd><dt><span class="term"><code class="code">--with-libstdcxx-zoneinfo=OPTION</code></span></dt><dd><p>Choose how <code class="classname">std::chrono::tzdb</code> will obtain
      the time zone info. The library requires a copy of the
      <code class="filename">tzdata.zi</code> and <code class="filename">leapseconds</code>
      files from the <a class="link" href="https://www.iana.org/time-zones" target="_top">IANA Time Zone
      Database</a>. The choice OPTION=static will embed a copy of the files
      into the library, and use that static data when time zone information
      is required. The choice OPTION=dir will use the files
      <code class="filename">dir/tzdata.zi</code> and
      <code class="filename">dir/leapseconds</code> (which must exist when a program
      tries to access time zone information). The choice OPTION=dir,static
      will try to use files in <code class="filename">dir</code> but if they are
      not available the embedded static data will be used instead.
      The default choice is OPTION=yes. This is equivalent to OPTION=dir,static
      with a system-specific default directory (if a suitable default for
      the target is known).
      The choice OPTION=no will disable all code for loading time zone info
      from file or from the embedded static data, which means that only the
      "UTC" and "GMT" time zones are defined. Using OPTION=no results in a
      smaller library, so is suitable for systems that will never need to
      query the time zone database.
      This does not change the library ABI.
    </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html>