How to find out what C ++ 11 features were implemented with the GLIBCXX version

Given the GLIBCXX version of the stdC ++ library (GLIBCXX_3.4.17 example) with this version, where can I find documentation that determines which functions were implemented?

Next, there is a way that this version of SO NAME will provide the same document.

I am working on an embedded system that has an existing version of libstdc ++; unfortunately, the supplied cross-compiler (g ++) is in a larger version than what the stdC ++ library on the target server supports. Updating the stdC ++ library on the target is not an option. Before writing a lot of code, you just need to find that it does not run on the target computer; I would like to know in advance what is and is not supported.

I found the GNU Documentation to be useful; however, I hope that there is a document in which you can get what was implemented taking into account the version of the symbol and / or SO NAME, and I just somehow missed it.

Thanks for any help in advance.

+5
source share
1 answer

with this version, where can I find documentation that determines which features were implemented?

You can match the GLIBCXX_A.BC character GLIBCXX_A.BC with the GCC release by checking https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

NB this will not be accurate since, for example, GCC 5.1 and GCC 5.2 use GLIBCXX_3.4.21 in a shared library. To separate them, check out the __GLIBCXX__ macro defined by the libstdC ++ headers, also documented on this page.

Manuals for libstdC ++ versions can be found at gcc.gnu.org/onlinedocs/gcc-[XYZ†/libstdc++/manual/ for example
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/libstdc++/manual/

Inside this guide is a status table showing the implementation status for each standard, the C ++ 11 support table in GCC 5.3.0 is located at https://gcc.gnu.org/onlinedocs/gcc-5.3.0/libstdc++/manual/ manual / status.html # status.iso.2011

Before writing a lot of code, you just need to find that it does not run on the target computer; I would like to know in advance what is and is not supported.

It is not enough to simply avoid using functions that are not supported by the library on the target system. If you communicate with a cross-compiler, it will depend on libstd ++, therefore, it will not work on this cross-compiler on the target system if it has only the older libstd ++, therefore

Updating the stdC ++ library in the target is not an option.

Then you need to either link statically (by creating large executables) or downgrade your cross-compiler to fit the purpose. Or at least force it to use headers and a dynamic library from the same version as the target one (by overriding the header and library search paths to point to copies of old files), although this might not work, since the new g++ , may not be able to compile old headers if they contain some invalid C ++ that the older g++ did not diagnose.

+2
source

Source: https://habr.com/ru/post/1237604/


All Articles