gpt4 book ai didi

c++11 - 在给定 GLIBCXX 版本的情况下,如何找到已实现的 C++11 功能

转载 作者:行者123 更新时间:2023-12-03 07:54:08 24 4
gpt4 key购买 nike

鉴于此版本的 stdc++ 库的 GLIBCXX 版本(示例 GLIBCXX_3.4.17),在哪里可以找到指定已实现哪些功能的文档?

此外,有没有一种方法可以在给定 SO NAME 版本的情况下提供相同的文档。

我正在开发一个具有现有版本 libstdc++ 的嵌入式系统;不幸的是,提供的交叉编译器 (g++) 的版本比目标上的 stdc++ 库支持的版本更高。升级目标上的 stdc++ 库不是一种选择。之前写了很多代码,到了才发现没有在target上运行;我想事先了解支持和不支持的内容。

我找到了 GNU Documentation有用;但是,我希望有一份文档,可以在其中获得已实现的符号版本和/或 SO NAME,但我不知何故错过了它。

感谢您提前提供任何帮助

最佳答案

given this version, where would one find documentation which specifies what features have been implemented?



您可以通过检查将 GLIBCXX_A.B.C 符号版本映射到 GCC 版本
https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

注意那不会是精确的,因为例如GCC 5.1 和 GCC 5.2 在共享库中都使用 GLIBCXX_3.4.21。要区分它们,请检查由 libstdc++ header 定义的 __GLIBCXX__ 宏,也记录在该页面上。

libstdc++ 发行版的手册位于
gcc.gnu.org/onlinedocs/gcc-[X.Y.Z]/libstdc++/manual/
例如
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/libstdc++/manual/

该手册中有一个状态表,显示了每个标准的实现状态,GCC 5.3.0 中的 C++11 支持表位于
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/libstdc++/manual/manual/status.html#status.iso.2011

Before I write a lot of code, to only find that it does not run on the target; I would like to know beforehand what is and is not supported.



仅仅避免使用目标系统上的库不支持的功能是不够的。如果您与交叉编译器链接,那么它将依赖于来自该交叉编译器的 libstdc++.so,并且如果它只有一个较旧的 libstdc++.so,它将无法在目标系统上运行

Upgrading the stdc++ library on the target is not an option.



然后您需要静态链接(创建大型可执行文件)或降级交叉编译器以匹配目标。或者至少强制它使用与目标上相同版本的头文件和动态库(通过覆盖头文件和库搜索路径以指向旧文件的副本),尽管这可能不起作用,因为较新的 g++如果旧头文件包含一些旧的 g++ 未诊断出的无效 C++,则可能无法编译旧头文件。

关于c++11 - 在给定 GLIBCXX 版本的情况下,如何找到已实现的 C++11 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34142758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com