【C】gcc 4.8有个BUG:缺少stdatomic.h
解决办法还是靠autoconf自动根据配置脚本来查找stdatomic.h这个头文件,如果找不到,就自己用gcc钦定原子操作函数(https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Atomic-Builtins.html)来造个轮子。这,是个BUG。因为GCC官网说:gcc在4.7就支持c11标准了。然而C11标准说:你得有stdatomic.h这个头文件,作为C语言标准库自带原子操作库。这年头怎么能没有原子操作呢?
然而,gcc忘了把stdatomic.h加入进去。这个BUG在版本4.9修复了。
总不能在config的时候判断gcc版本吧?那就太不清真了。C语言不是这么用的。但考虑到CentOS 7的yum install gcc安装的竟然是4.8.5(注意日期是2018-3-6),CentOS 6的肯定更旧。所以用autoconf找stdatomic.h吧。
虽说使用centos-release-scl可以直接使用最新的gcc。
看4.9的版本Release:http://gcc.gnu.org/gcc-4.9/changes.html
参考资料:
<stdatomic.h> in GCC 4.8?
https://stackoverflow.com/questions/20326604/stdatomic-h-in-gcc-4-8
这年代没点bug才稀奇呢 Ayala 发表于 2018-3-11 07:19
这年代没点bug才稀奇呢
比起bug,我觉得glitch更令人感到喜闻乐见。 我现在用的就是gcc 4.80的版本
页:
[1]