c++ - 使用 -march 编译会导致线程显示 "pure virtual method called"

标签 c++ linux multithreading gcc raspberry-pi

我正在尝试通过带有 -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 位的,这可能会导致崩溃或错误。

来源:https://stackoverflow.com/users/1505939/m-m

关于c++ - 使用 -march 编译会导致线程显示 "pure virtual method called",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44104247/

相关文章:

c++ - 如何编辑已在 C++ 中创建的文件 txt

c++ - 为什么没有获取互斥体?

c++ - Opencv人脸检测速度较慢

python - 脚本交互模式

linux - 使用 -L 如何影响链接器?

java - JDBC 在 "same"时间打开 2 个连接

c++ - 在 std::map 中插入 std::map

linux - 错误 : Can't open display:

android - 为什么有人想要绑定(bind)服务(而不创建它),而不是使用线程?

objective-c - Objective C 线程和 GUI 更新问题