c ++ 11 #include <thread>给出编译错误</thread>

时间:2013-03-26 08:09:00

标签: c++ compiler-errors g++ pthreads

尝试从已编译的源文件创建目标文件时出现编译错误。我正在使用c ++ 11附带的标题。我也在使用c ++模式识别库和其他几个包含。

我所做的只是将#include <thread>添加到我的rbm_test.cc源文件中。

我的编译命令:

  

g ++ -std = c ++ 11 -O3 -DQUIET -fPIC -pthread -ansi -pedantic -DARCH_INTEL -Wall -W -Wchar-subscripts -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion -Wno- old-style-cast -Wctor-dtor-privacy -Wnon-virtual-dtor -I ../ src -I ../ .. -DPATREC -D_ UNIX _ -o rbm_test.o -c ../的src / rbm_test.cc

我得到的编译错误是:

  

错误:#error此文件需要编译器和库支持   ISO C ++ 2011标准。这种支持目前是实验性的,并且   必须使用-std = c ++ 11或-std = gnu ++ 11编译器选项启用。

奇怪的是,当我使用

编译以下代码示例时
  

g ++ -std = c ++ 11 -pthread -c main.cpp -o main.o

然后我没有错误。

这是main.cpp

#include <iostream>
#include <thread>

void f1()
{
  std::cout << "Thread  executing\n";
}

int main()
{
    std::thread t1(f1);
    std::thread t2(f1);
    t1.join();
    t2.join();
}

当我尝试编译rbm_test.cc时,是否有可能某些编译标志发生冲突?

1 个答案:

答案 0 :(得分:8)

- ansi标志与-std=c++11标志冲突。 -ansi相当于-std=c++98。删除-ansi标志可以解决问题。