使用 -march 编译会导致线程说"pure virtual method called"

Compiling with -march causes threads to say "pure virtual method called"

本文关键字:pure virtual method called 线程 编译 -march 使用      更新时间:2023-10-16

我正在尝试通过带有-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;
}
由于armv8-a使用 64 位

体系结构,因此使用 -march=armv8-a 标志将为 64 位计算机进行编译。但是,许多树莓派操作系统(映像(是32位的,这可能会导致崩溃或错误。

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