На 12.04 системе Ubuntu, когда я пытаюсь компиляции следующий код:станд :: 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++ или, возможно, что-то еще. И в идеале я хотел бы решить эту проблему.
Спасибо, что я установил gcc 4.7 из PPA и это исправило проблему для меня. –