如何解决如何在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多线程程序,或者我的编译选项错误?
解决方法
该程序无法在-static
和Ubuntu 20.04 amd64本机上都以qemu-aarch64
运行(总是检查其他更稳定的平台:-))
众所周知,-static
和线程存在一些非gem5特定的问题,例如:when g++ static link pthread,cause Segmentation fault,why?
如果提到的解决方法不起作用,您现在也可以使用动态链接来运行,如以下所述:How to run a dynamically linked executable syscall emulation mode se.py in gem5?我已经对其进行了测试,并且可以在该示例中使用。
最后请注意,存在一个严重的多线程SE Ruby问题,我们不确定如何解决:https://gem5.atlassian.net/browse/GEM5-676
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。