Table of Contents
The set of features available in the GNU C++ library is shaped by several GCC Command Options. Options that impact libstdc++ are enumerated and detailed in the table below.
The standard library conforms to the dialect of C++ specified by the
-std
option passed to the compiler.
By default, g++ is equivalent to
g++ -std=gnu++17 since GCC 11, and
g++ -std=gnu++14 in GCC 6, 7, 8, 9, and 10, and
g++ -std=gnu++98 for older releases.
Table 3.1. C++ Command Options
Option Flags | Description |
---|---|
-std
| Select the C++ standard, and whether to use the base standard or GNU dialect. |
-fno-exceptions
| See exception-free dialect |
-fno-rtti
| As above, but RTTI-free dialect. |
-pthread | For ISO C++11
<thread> ,
<future> ,
<mutex> ,
or <condition_variable> .
|
-latomic | Linking to libatomic
is required for some uses of ISO C++11
<atomic> .
|
-lstdc++exp | Linking to libstdc++exp.a
is required for use of experimental C++ library features.
This currently provides support for the C++23 types defined in the
<stacktrace> header,
the Filesystem library extensions defined in the
<experimental/filesystem>
header,
and the Contracts extensions enabled by -fcontracts .
|
-lstdc++fs | Linking to libstdc++fs.a
is another way to use the Filesystem library extensions defined in the
<experimental/filesystem>
header.
The libstdc++exp.a library
also provides all the symbols contained in this library.
|
-fopenmp | For parallel mode. |
-ltbb | Linking to tbb (Thread Building Blocks) is required for use of the
Parallel Standard Algorithms and execution policies in
<execution> .
|
-ffreestanding | Limits the library to its freestanding subset. Headers that are not supported in freestanding will emit a "This header is not available in freestanding mode" error. Headers that are in the freestanding subset partially will not expose functionality that is not part of the freestanding subset. |