首页 > 解决方案 > 如何在 Ruby 系统中运行 ARM 多线程程序

问题描述

我完全实现了以下网页的内容: http ://www.gem5.org/documentation/learning_gem5/part3/running/ 该程序可以根据网页要求在X86下编译,但是我想得到一个ARM二进制文件,所以我使用下面的代码来编译它:

aarch64-linux-gnu-g++ -o threads threads.cpp -pthread -std = c ++ 11 -static

我可以编译并获取二进制文件,但在运行过程中出现以下错误:

erminate called after throwing an instance of 'std::system_error'

what():  Enable multithreading to use std::thread: Operation not permitted

由于gem5的bin文件夹中没有提供编译好的ARM二进制文件,是不是说gem5不支持运行ARM多线程程序,还是我的编译选项不对?

标签: c++multithreadingarmgem5

解决方案


该程序无法-staticqemu-aarch64Ubuntu 20.04 amd64 本机上运行(始终检查其他更稳定的平台:-))

众所周知,and 线程存在一些非 Gem5 特有的问题-static,参见 eg: when g++ static link pthread, cause Segmentation fault,为什么?

如果提到的解决方法不起作用,您现在还可以使用动态链接运行,如下所述:如何在 gem5 中运行动态链接的可执行系统调用仿真模式 se.py?我现在刚刚对其进行了测试,它适用于该示例。

最后请注意,存在一个严重的多线程 SE Ruby 问题,我们不确定如何解决:https ://gem5.atlassian.net/browse/GEM5-676


推荐阅读