2

C++ pthread プログラムにアトミックを含めようとしています。

#include <atomic>

しかし、私はエラーが発生しました:

エラー: アトミック: そのようなファイルまたはディレクトリはありません

私は試した :

 #include <asm/atomic>
 #include <atomic.h>
 #include <linux/atomic>
 #include <util/atomic>
 #include <stdcatomic>
 #include <catomic>

誰も働きません。

私の gcc は gcc バージョン 4.1.2 20080704 (Red Hat 4.1.2-52) です。

ポスト :

#include <cstdatomic> "そのようなファイルはありません" in ubuntu

g++ 4.4.3 での std::atomic サポート

どちらも機能しません。

And #include <thread> also got : No such file or directory

どんな助けでも大歓迎です。

ありがとう !

アップデート、

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. 

どんな助けでも大歓迎です。ありがとう !

4

3 に答える 3

6

atomicには GCC 4.4 が必要であるという投稿にリンクしているにもかかわらず、4.1.x で動作することを期待しているため、投稿は少し混乱しています。

サポートするには、少なくとも GCC 4.4 にアップグレードする必要がありますatomic。GCC 4.1 でアトミックのサポートを有効にする方法はありませんが、boost::atomic代わりに使用できます。今後の参考のために、このチャートはどのバージョンの GCC がどの C++11 機能をサポートしているかを示しています。

なんらかの理由で GCC をアップグレードできない場合は、別のコンパイラ (clang など) を一緒に使用することもできます。

于 2012-05-28T15:43:14.740 に答える
1

このテーブルは、gcc の実装ステータスを追跡します。お使いのコンパイラ バージョンは、アトミックをまだサポートしていません。

いずれにせよ、std=c++11(またはc++0x古いバージョンでは) スイッチを使用して C++11 機能を有効にする必要があります。

于 2012-05-28T15:43:37.210 に答える