gnz*_*lbg 4 c++ linux libstdc++
宏__GLIBCXX__包含libstdc ++版本的时间戳,例如,来自gcc文档(https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html)
__GLIBCXX__压缩ISO日期格式的libstdc ++当前版本,为无符号长整数。有关特定版本的特定宏的价值的详细信息,请查阅ABI政策和准则附录。
我正在寻找自4.9.0版本以来的所有版本的值(包括4.8.x等较小版本的版本)。
libstdc ++的文档似乎没有提供此信息(它仅提供gcc 4.7.0之前的日期)。
在哪里可以找到的值__GLIBCXX__?有人有吗?
ABI政策和准则附录(https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html)表示
库预定义宏的增量增加。对于3.4.0之前的版本,宏为GLIBCPP。对于更高版本,它是GLIBCXX。(libstdc ++项目在整个源代码中从CPP慷慨地更改为CXX,以允许“ C”预处理器使用CPP宏命名空间。)这些宏定义为库的发布日期,采用压缩ISO日期格式,为无符号长整数。 。
但随后最多只能提供GCC 4.7.0之前的宏值。仍在此处列出特定GCC发布的日期:
https://gcc.gnu.org/releases.html
但是例如,对于发布日期为“ 2014年7月16日”的GCC 4.9.1,ISO日期格式为20140716,其值为__GLIBCXX__20140617(注意已更改7和6)。
无论如何,您想要的信息都是无用的,因此您应该以其他方式解决问题。
GCC 4.9.3是在GCC 5.3之后发布的,因此它在该宏中有较晚的日期,因此您不能仅执行以下操作:
#if __GLIBCXX__ > 20150422 // GCC 5.1 release
Run Code Online (Sandbox Code Playgroud)
因为这对于4.9.3确实适用,但是并不具备5.1的所有功能。
大多数GNU / Linux发行版也不提供FSF官方发行版,它们会构建快照,快照将带有快照的日期,而不会在发行日期的任何列表中列出。并且给定日期的5.x分支的快照与给定日期的6.x分支的快照具有相同的日期,因此您无法区分它们。
为了回答原始问题,以下是一个hacky命令,您可以在您的shell中执行该命令以获取版本列表以及__GLIBCXX__每个版本的值(从v4.1.0开始):
svn list "svn://gcc.gnu.org/svn/gcc/tags" | grep -o "gcc_\([^34]_.*\|4_[^0]_.*\)_release" | xargs -n 1 -I {} sh -c "printf \"{}: \" && svn cat svn://gcc.gnu.org/svn/gcc/tags/{}/gcc/DATESTAMP"
Run Code Online (Sandbox Code Playgroud)
结果是:
请注意,这些值来自GCC团队的官方版本。如果您使用的是非官方发行版,则这些值可能会略有不同。
| 归档时间: |
|
| 查看次数: |
1041 次 |
| 最近记录: |