P M*_*zie 5 gcc g++ libstdc++ c++11
给定此版本的stdc ++库(例如GLIBCXX_3.4.17)的GLIBCXX版本,在哪里可以找到指定已实现哪些功能的文档?
还有一种方法,给定SO NAME版本将提供相同的文档.
我正在研究一个嵌入式系统,它有一个现有版本的libstdc ++; 遗憾的是,提供的交叉编译器(g ++)的版本比目标上的stdc ++库支持的版本更高.不能在目标上升级stdc ++库.在我编写很多代码之前,只发现它没有在目标上运行; 我想事先知道什么是支持和不支持.
我发现GNU文档很有用; 但是,我希望有一个文件,其中一个人可以获得已经实现的符号版本和/或SO NAME,我只是错过了它.
在此先感谢您的帮助
对于这个版本,在哪里可以找到指定已实现哪些功能的文档?
您可以通过检查https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.htmlGLIBCXX_A.B.C将符号版本映射到 GCC 版本
请注意,这并不准确,因为例如 GCC 5.1 和 GCC 5.2 都GLIBCXX_3.4.21在共享库中使用。要区分它们,请检查__GLIBCXX__libstdc++ 标头定义的宏,该文件也记录在该页面上。
libstdc++ 版本的手册位于 gcc.gnu.org/onlinedocs/gcc- [XYZ] /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++/手册/手册/status.html#status.iso.2011
之前我写了很多代码,才发现它没有在目标上运行;我想事先知道什么是支持的,什么是不支持的。
仅仅避免使用目标系统上的库不支持的功能是不够的。如果您与交叉编译器链接,那么它将依赖于该交叉编译器中的 libstdc++.so,并且如果目标系统只有较旧的 libstdc++.so,则它将无法在目标系统上运行
无法升级目标上的 stdc++ 库。
然后,您需要静态链接(创建大型可执行文件)或降级交叉编译器以匹配目标。或者至少强制它使用与目标上找到的相同版本的标头和动态库(通过覆盖标头和库搜索路径以指向旧文件的副本),尽管这可能不起作用,因为较新的文件可能会g++起作用如果旧的头文件包含一些旧的头文件g++未诊断的无效 C++,则无法编译旧的头文件。
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |