C ++ 11 Threads,Error纯虚函数调用

时间:2014-05-10 16:08:21

标签: c++ multithreading c++11 pthreads beagleboneblack

这是一个非常小的C ++ 11 Thread API代码,我正在尝试编译

#include<iostream>
#include<thread>

using namespace std;

void threadFunction(void)
{
    cout<<"hello from thread:";//<<this_thread::get_id()<<endl;
}

int main()
{
    std::thread t(threadFunction);
    t.join();

    return 0;
}



在编译时作为
g ++ thread1.cpp -pthread -std = c ++ 11
我收到以下错误
称为纯虚方法
在没有活动异常的情况下终止被叫
中止


有什么不对,请有人帮忙
请注意,我正在使用ARM A8处理器在Beaglebone Black上进行编译

3 个答案:

答案 0 :(得分:4)

这是libstdc ++或Clang中的错误,具体取决于您的要求。如果您使用2013年10月之后发布的Clang版本,它应该可以工作。您在运行g++ --version时看到了什么?

作为解决方法,您可以尝试使用此命令行。我不保证它会起作用;请在结果上发表评论。

g++ -pthread -std=c++11 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4} thread1.cpp

这是错误报告:

http://llvm.org/bugs/show_bug.cgi?id=12730

这是对Clang司机的正式修复:

https://llvm.org/viewvc/llvm-project?view=revision&revision=191707

我不知道这是否也是GCC驱动程序中的错误,并且/或者它是否已被修复。

答案 1 :(得分:3)

使用ARM Cortex-A7在Raspberry Pi 2 Model B上遇到同样的问题。 用g ++ - 4.7编译,结果证明罪魁祸首是编译器标志:

select 
  .... 
from 
   dkcd 
     right join 
                a
                  , b

答案 2 :(得分:0)

虽然clang有一个相关的问题,但这完全是一个gcc bug现在记录在:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62100