2013-05-07 70 views
1

,當我嘗試編譯下面的代碼的Ubuntu 12.04系統:的std :: atomic_thread_fence是未定義參考

#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++中缺少的功能,還是其他可能的問題。理想情況下,我希望能夠解決問題。

回答