1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2<!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-NS Stylesheets V1.78.1" /><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> 3 When configuring libstdc++, you'll have to configure the entire 4 <span class="emphasis"><em>gccsrcdir</em></span> directory. Consider using the 5 toplevel gcc configuration option 6 <code class="literal">--enable-languages=c++</code>, which saves time by only 7 building the C++ toolchain. 8</p><p> 9 Here are all of the configure options specific to libstdc++. Keep 10 in mind that 11 12 <a class="link" href="http://sourceware.org/autobook/autobook/autobook_14.html" target="_top">they 13 all have opposite forms as well</a> (enable/disable and 14 with/without). The defaults are for the <span class="emphasis"><em>current 15 development sources</em></span>, which may be different than those 16 for released versions. 17</p><p>The canonical way to find out the configure options that are 18 available for a given set of libstdc++ sources is to go to the 19 source directory and then type: <span class="command"><strong>./configure --help</strong></span>. 20</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 21 compilers. As such, targets like "powerpc-elf" will have 22 libstdc++ built many different ways: "-msoft-float" 23 and not, etc. A different libstdc++ will be built for each of 24 the different multilib versions. This option is on by default. 25 </p></dd><dt><span class="term"><code class="code">--enable-sjlj-exceptions</code></span></dt><dd><p>Forces old, set-jump/long-jump exception handling model. If 26 at all possible, the new, frame unwinding exception handling routines 27 should be used instead, as they significantly reduce both 28 runtime memory usage and executable size. This option can 29 change the library ABI. 30 </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 31 compiler-specific subdirectory (i.e., 32 <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}</code>) 33 instead of <code class="code">${libdir}</code>. This option is useful if you 34 intend to use several versions of gcc in parallel. In addition, 35 libstdc++'s include files will be installed in 36 <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>, 37 unless you also specify 38 <code class="literal">--with-gxx-include-dir=</code><code class="filename">dirname</code> during configuration. 39 </p></dd><dt><span class="term"><code class="code">--with-gxx-include-dir=<include-files dir></code></span></dt><dd><p>Adds support for named libstdc++ include directory. For instance, 40 the following puts all the libstdc++ headers into a directory 41 called "4.4-20090404" instead of the usual 42 "c++/(version)". 43 </p><pre class="programlisting"> 44 --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> 45 (described next). 46 </p></dd><dt><span class="term"><code class="code">--enable-cstdio=OPTION</code></span></dt><dd><p>Select a target-specific I/O package. At the moment, the only 47 choice is to use 'stdio', a generic "C" abstraction. 48 The default is 'stdio'. This option can change the library ABI. 49 </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> 50 (described next). 51 </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 52 choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix 53 (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, 54 'gnu' to specify a model based on functionality from the GNU C 55 library (langinfo/iconv/gettext) (from <a class="link" href="https://www.gnu.org/software/libc/" target="_top">glibc</a>, the GNU C 56 library), 'generic' to use a generic "C" abstraction which consists 57 of "C" locale info, 'newlib' to specify the Newlib C library model 58 which only differs from the 'generic' model in the handling of 59 ctype, or 'darwin' which omits the <span class="type">wchar_t</span> specializations 60 needed by the 'generic' model. 61 </p><p>If not explicitly specified, the configure process tries 62 to guess the most suitable package from the choices above. The 63 default is 'generic'. On glibc-based systems of sufficient 64 vintage (2.3 and newer), 'gnu' is automatically selected. On newlib-based 65 systems (<code class="code">'--with_newlib=yes'</code>) and OpenBSD, 'newlib' is 66 automatically selected. On Mac OS X 'darwin' is automatically selected. 67 This option can change the library ABI. 68 </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-allocator</code></span></dt><dd><p>This is an abbreviated form of 69 <code class="code">'--enable-libstdcxx-allocator=auto'</code> (described 70 next). 71 </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 72 choices are 'new' to specify a wrapper for new, 'malloc' to 73 specify a wrapper for malloc, 'mt' for a fixed power of two allocator, 74 'pool' for the SGI pooled allocator or 'bitmap' for a bitmap allocator. 75 See this page for more information on allocator 76 <a class="link" href="memory.html#allocator.ext" title="Extension Allocators">extensions</a>. This option 77 can change the library ABI. 78 </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 79 compatibility with C++. Options are c, c_std, and c_global. 80 These correspond to the source directory's include/c, 81 include/c_std, and include/c_global, and may also include 82 include/c_compatibility. The default is 'c_global'. 83 </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> 84 (described next). 85 </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 86 given in the 87 general <a class="link" href="http://gcc.gnu.org/install/configure.html" target="_top">compiler 88 configuration instructions</a>. This option can change the 89 library ABI. 90 </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, 91 the configure process enables it if possible. This 92 option can change the library ABI. 93 </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time</code></span></dt><dd><p>This is an abbreviated form of 94 <code class="code">'--enable-libstdcxx-time=yes'</code>(described next). 95 </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 96 clock_gettime clocks, used in the implementation of [time.clock], 97 and of the nanosleep and sched_yield functions, used in the 98 implementation of [thread.thread.this] of the 2011 ISO C++ standard. 99 The choice OPTION=yes checks for the availability of the facilities 100 in libc and libposix4. In case it's needed the latter is also linked 101 to libstdc++ as part of the build process. OPTION=rt also searches 102 (and, if needed, links) librt. Note that the latter is not always 103 desirable because, in glibc, for example, in turn it triggers the 104 linking of libpthread too, which activates locking, a large overhead 105 for single-thread programs. OPTION=no skips the tests completely. 106 The default is OPTION=auto, which skips the checks and enables the 107 features only for targets known to support them. 108 </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. 109 By default, the debug libraries are compiled with 110 <code class="code"> CXXFLAGS='-g3 -O0 -fno-inline'</code> 111 , are installed in <code class="code">${libdir}/debug</code>, and have the 112 same names and versioning information as the non-debug 113 libraries. This option is off by default. 114 </p><p>Note this make command, executed in 115 the build directory, will do much the same thing, without the 116 configuration difference and without building everything twice: 117 <code class="code">make CXXFLAGS='-g3 -O0 -fno-inline' all</code> 118 </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-debug </code> 119 is also specified, and applies to the debug builds only. With 120 this option, you can pass a specific string of flags to the 121 compiler to use when building the debug versions of libstdc++. 122 FLAGS is a quoted string of options, like 123 </p><pre class="programlisting"> 124 --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) 125 flags to the compiler to use when building libstdc++. This 126 option can change the library ABI. FLAGS is a quoted string of 127 options, like 128 </p><pre class="programlisting"> 129 --enable-cxx-flags='-fvtable-gc -fomit-frame-pointer -ansi'</pre><p> 130 Note that the flags don't necessarily have to all be -f flags, 131 as shown, but usually those are the ones that will make sense 132 for experimentation and configure-time overriding. 133 </p><p>The advantage of --enable-cxx-flags over setting CXXFLAGS in 134 the 'make' environment is that, if files are automatically 135 rebuilt, the same flags will be used when compiling those files 136 as well, so that everything matches. 137 </p><p>Fun flags to try might include combinations of 138 </p><pre class="programlisting"> 139 -fstrict-aliasing 140 -fno-exceptions 141 -ffunction-sections 142 -fvtable-gc</pre><p>and opposite forms (-fno-) of the same. Tell us (the libstdc++ 143 mailing list) if you discover more! 144 </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 145 with many other functions for wide characters, and math 146 classification macros, etc. If enabled, all C99 functions not 147 specified by the C++ standard will be put into <code class="code">namespace 148 __gnu_cxx</code>, and then all these names will 149 be injected into namespace std, so that C99 functions can be 150 used "as if" they were in the C++ standard (as they 151 will eventually be in some future revision of the standard, 152 without a doubt). By default, C99 support is on, assuming the 153 configure probes find all the necessary functions and bits 154 necessary. This option can change the library ABI. 155 </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 156 required for wide character conversion support. Disabling 157 wide character specializations may be expedient for initial 158 porting efforts, but builds only a subset of what is required by 159 ISO, and is not recommended. By default, this option is on. 160 This option can change the library ABI. 161 </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 162 provided as a GNU extension to C++98 in g++. This flag builds 163 support for "long long" into the library (specialized 164 templates and the like for iostreams). This option is on by default: 165 if enabled, users will have to either use the new-style "C" 166 headers by default (i.e., <cmath> not <math.h>) 167 or add appropriate compile-time flags to all compile lines to 168 allow "C" visibility of this feature (on GNU/Linux, 169 the flag is -D_ISOC99_SOURCE, which is added automatically via 170 CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). 171 This option can change the library ABI. 172 </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 173 the optimization that allocates empty objects in static memory. 174 Mostly useful together with shared memory allocators, see PR 175 libstdc++/16612 for details. 176 </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 177 library templates, in the form of specialized templates described in 178 the <a class="link" href="concept_checking.html" title="Concept Checking">Concept 179 Checking</a> section. They 180 can help users discover when they break the rules of the STL, before 181 their programs run. These checks are based on C++03 rules and some of 182 them are not compatible with correct C++11 code. 183 </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 184 shared library (if a shared library has been 185 requested). Values for 'style' that are currently supported 186 are 'gnu', 'gnu-versioned-namespace', 'darwin', 187 'darwin-export', and 'sun'. Both gnu- options require that a recent 188 version of the GNU linker be in use. Both darwin options are 189 equivalent. With no style given, the configure script will try 190 to guess correct defaults for the host system, probe to see if 191 additional requirements are necessary and present for 192 activation, and if so, will turn symbol versioning on. This 193 option can change the library ABI. 194 </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 195 attributes. If enabled (as by default), and the compiler seems 196 capable of passing the simple sanity checks thrown at it, adjusts 197 items in namespace std, namespace std::tr1, namespace std::tr2, 198 and namespace __gnu_cxx to have <code class="code">visibility ("default")</code> 199 so that -fvisibility options can be used without affecting the 200 normal external-visibility of namespace std entities. 201 Prior to 4.7 this option was spelled <code class="code">--enable-visibility</code>. 202 </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 203 stdc++.h.gch, a pre-compiled file including all the standard 204 C++ includes. If enabled (as by default), and the compiler 205 seems capable of passing the simple sanity checks thrown at 206 it, try to build stdc++.h.gch as part of the make process. 207 In addition, this generated file is used later on (by appending <code class="code"> 208 --include bits/stdc++.h </code> to CXXFLAGS) when running the 209 testsuite. 210 </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 211 specializations for certain types defined in the standard libraries. 212 These types include <code class="classname">string</code> and dependents like 213 <code class="classname">char_traits</code>, the templatized IO classes, 214 <code class="classname">allocator</code>, and others. 215 Disabling means that implicit 216 template generation will be used when compiling these types. By 217 default, this option is on. This option can change the library ABI. 218 </p></dd><dt><span class="term"><code class="code">--disable-hosted-libstdcxx</code></span></dt><dd><p> 219 By default, a complete <span class="emphasis"><em>hosted</em></span> C++ library is 220 built. The C++ Standard also describes a 221 <span class="emphasis"><em>freestanding</em></span> environment, in which only a 222 minimal set of headers are provided. This option builds such an 223 environment. 224 </p></dd><dt><span class="term"><code class="code">--disable-libstdcxx-verbose</code></span></dt><dd><p> 225 By default, the library is configured to write descriptive messages 226 to standard error for certain events such as calling a pure virtual 227 function or the invocation of the standard terminate handler. Those 228 messages cause the library to depend on the demangler and standard I/O 229 facilities, which might be undesirable in a low-memory environment or 230 when standard error is not available. This option disables those 231 messages. This option does not change the library ABI. 232 </p></dd><dt><span class="term"><code class="code">--disable-libstdcxx-dual-abi</code></span></dt><dd><p> 233 Disable support for the new, C++11-conforming implementations of 234 <code class="code">std::string</code>, <code class="code">std::list</code> etc. so that the 235 library only provides definitions of types using the old ABI 236 (see <a class="xref" href="using_dual_abi.html" title="Dual ABI">Dual ABI</a>). 237 This option changes the library ABI. 238 </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> 239 Set the default value for the <span class="symbol">_GLIBCXX_USE_CXX11_ABI</span> 240 macro (see <a class="xref" href="using_macros.html" title="Macros">Macros</a>). 241 The default is <code class="option">OPTION=new</code> which sets the macro to 242 <code class="literal">1</code>, 243 use <code class="option">OPTION=gcc4-compatible</code> to set it to 244 <code class="literal">0</code>. 245 This option does not change the library ABI. 246 </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++ 247 runtime with instrumentation for vtable verification. All virtual 248 functions in the standard library will be verified at runtime. 249 Types impacted include <code class="classname">locale</code> and 250 <code class="classname">iostream</code>, and others. Disabling means that 251 the C++ runtime is compiled without support for vtable 252 verification. By default, this option is off. 253 </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 254 as the usual libstdc++ and libsupc++ libraries. This is enabled by 255 default on select POSIX targets where it is known to work and disabled 256 otherwise. 257 </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>