1

Ubuntu 12.04 システムで、次のコードをコンパイルしようとすると:

#include <atomic>
int a;
int main()
{
  a = 0;
  std::atomic_thread_fence(std::memory_order_acquire);
  a = 1;
}

次のようなエラー メッセージが表示されます。

g++ test.cpp -std=c++0x 
/tmp/ccayKntC.o: In function `main': test.cpp:(.text+0x14): undefined reference to `std::atomic_thread_fence(std::memory_order)' collect2: ld returned 1 exit status

これは、コンパイル時にclang++も発生します。これはリンカー エラーであるため、私のバージョンの libstdc++ には必要な機能が欠けていると思います。ただし、他のアトミック操作は機能しているようです。

Ubuntu 12.04 を使用しています。システムのセットアップに問題があるのか​​、それが libstdc++ にない機能なのか、それとも何か他のものなのか、疑問に思っています。そして理想的には、問題を解決できるようになりたいと思っています。

4

1 に答える 1