# Interesting `configure` options

The latest version of this document is always available at http://sourceware.cygnus.com/libstdc++/configopts.html.

To the libstdc++-v3 homepage.

Here are some of the non-obvious options to libstdc++'s configure. Keep in mind that they all have opposite forms as well (enable/disable and with/without). The defaults are for the latest snapshot, 2.90.8.

`--enable-multilib` [default]

  This is part of the generic multilib support for building cross compilers. As such, targets like "powerpc-elf" will be 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.

`--enable-debug`

  The configure script will automatically detect the highest level of optimization that the compiler in use can use (certain versions of g++ will ICE if given the `-O2` option, but this is fixed in later versions of the compiler). This --enable flag will disable all optimizations and instruct the compiler to emit as much extra debugging information as it can, for use inside GDB.

`--enable-cstdio` [default]

  This is an abbreviated form of `'--enable-cstdio=libio'` (described next).

`--enable-cstdio=LIB`

  Select a target-specific I/O package. As of libstdc++-v3 snapshot 2.90.8, the choices are 'libio' to specify the GNU I/O package (from glibc, the GNU C library), or 'wince' to specify the Microsoft Windows CE library. Eventually a generic cstdio interface will be added so that people who want to use libstdc++-v3 with say, the Palm Pilot, will be able to use libstdc++-v3 without libio.

`--enable-long_long`

  The "long long" 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).

  Careful, that's an underscore between the words, not a hyphen.

`--enable-namespaces` [default]

  By default, g++ currently ignores namespace `std` for backwards compatibility. It can be turned on with the `-fhonor-std` flag to the compiler. As of libstdc++-v3 snapshot 2.90.8, that flag is passed to g++ when building the library. (This will eventually be the default for the compiler itself.) The --disable variant will put all std:: symbols into the global namespace.

`--enable-threads`

  This is an abbreviated form of `'--enable-threads=yes'` (described next).

`--enable-threads=LIB`

  Select a threading library. As of libstdc++-v3 snapshot 2.90.8, the choices are: 'yes' for some kind of default (hmmmmm); 'decosf1', 'irix', 'mach', 'os2', 'posix'/'pthreads' (same thing), 'solaris', 'win32', 'dce', or 'vxworks' to select the corresponding interface; and 'single', 'no', or 'none' for the null-case, single-threaded library.

  All of this is currently undergoing a lot of changes. As of 2.90.8, 'single' and 'posix' are the only implemented models.

`--enable-libgcc-rebuild=DIR / --disable-libgcc-rebuild`

  This is a grueling temporary hack no matter which way you look at it. It's described in its own little page. Note that other --enable flags will interact with this one. As of libstdc++-v3 snapshot 2.90.8, this is enabled by default, with DIR set to `'../..'` , so that building the complete GCC sources with libstdc++-v3 in place works transparently.

Return to the top of the README or to the homepage.

$Id: configopts.html,v 1.2 2000/03/21 03:54:40 bkoz Exp $