如何在Linux上的C++中包含<atomic>?

use*_*288 1 c++ linux gcc pthreads atomic

我试图在我的C++ pthread程序中包含atomic.

#include <atomic>
Run Code Online (Sandbox Code Playgroud)

但是,我得到了错误:

错误:原子:没有这样的文件或目录

我试过了 :

 #include <asm/atomic>
 #include <atomic.h>
 #include <linux/atomic>
 #include <util/atomic>
 #include <stdcatomic>
 #include <catomic>
Run Code Online (Sandbox Code Playgroud)

没有人工作.

我的gcc是gcc版本4.1.2 20080704(Red Hat 4.1.2-52)

帖子:

在ubuntu中#include <cstdatomic>"没有这样的文件"

g ++ 4.4.3中的std :: atomic支持

也不工作.

And #include <thread> also got : No such file or directory
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

谢谢 !

UPDATE,

我正在尝试在Linux上安装GCC 4.7,但在"make check"中,我收到错误,

   autogen -T /remote/mypath/gcc_4_7_2012_5_28/gcc_4_7_new_2012_5_29/trunk/fixincludes/check.tpl , remote/mypath/gcc_4_7_2012_5_28/gcc_4_7_new_2012_5_29/trunk/fixincludes/inclhack.def ,

   make[2]: execvp: autogen: Permission denied, then I tried to install autogen, but 
   got: I need to install guile-devel, then when I installed guile-2.0.5-2.1.src.rpm , 

   I got  rpm -ivh guile-2.0.5-2.1.src.rpm, warning: guile-2.0.5-2.1.src.rpm: Header V3 
   RSA/SHA256 signature: NOKEY, key ID 3dbdc284

   error: cannot write to %sourcedir /usr/src/redhat/SOURCES, I cannot get root 
   authorization. 
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢 !

Mah*_*dsi 6

您的帖子有点令人困惑,因为您链接到需要GCC 4.4的帖子atomic,但您希望它能在4.1.x上运行.

您需要升级到至少GCC 4.4才能获得atomic支持.虽然您可以使用GCC 4.1,但无法在GCC 4.1中启用对原子的支持boost::atomic.为了将来参考,此图表显示哪个版本的GCC支持哪些C++ 11功能.

如果由于某种原因你不能升级GCC,你也可以尝试使用不同的编译器(例如clang).

  • 请注意,在gcc 4.4发行说明中没有提供`<atomic>`,但是`<cstdatomic>`. (2认同)