使用-march进行编译会导致线程说“称为纯虚方法”

时间:2017-05-22 03:32:01

标签: c++ linux multithreading gcc raspberry-pi

我正在尝试通过带有-march=armv8-a标志的gcc编译我的C ++ Raspberry Pi 3代码。但是,使用此标志会导致我的线程失败,只能说pure virtual method called。我知道它是-march=armv8-a标志,因为当我在没有它的情况下编译它时,线程会再次开始工作。

请注意:线程甚至没有启动,只是提供pure virtual method called

有人可以在他们的Raspberry Pi 3上用-march=armv8-a编译这个并报告他们得到了什么吗?

#include <iostream>
#include <thread>
#include <unistd.h>

void threadedFunction()
{
    std::cout << "Hello from thread" << std::endl;
}

int main()
{
    std::thread t1(threadedFunction);
    sleep(2);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

由于armv8-a使用64位体系结构,因此使用-march=armv8-a标志将为64位计算机进行编译。但是,许多Raspberry Pi OS(图像)都是32位,可能会导致崩溃或错误。

信用:https://stackoverflow.com/users/1505939/m-m

相关问题