我正在尝试通过带有 -march=armv8-a
标志的 gcc 编译我的 C++ Raspberry Pi 3 代码。但是,使用此标志会导致我的线程失败,方法是说 pure virtual method called
。我知道它是 -march=armv8-a
标志,因为当我在没有它的情况下编译它时,线程会再次开始工作。
请注意:线程甚至没有启动,它只是提供了一个调用的纯虚方法
有人可以在他们的 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 位机器编译。但是,许多 Raspberry Pi 操作系统(图像)是 32 位的,这可能会导致崩溃或错误。
关于c++ - 使用 -march 编译会导致线程显示 "pure virtual method called",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44104247/