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 $