c++ - 如何在 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
在qemu-aarch64
Ubuntu 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
推荐阅读
- ios - 如何为 GDPR / RGPD 匿名化 iOS 版 Google Analytics(分析)
- mysql - MySQL / PostgreSQL - 这可以在事务中执行并行写入吗?
- java - 如何在 ehcache 3.5 版本中将缓存过期配置为 none 和 overflowToDisk="false"?
- google-apps-script - 如何检查电子邮件是否附有 PDF(如果存在)?如何使用 Google App Script 在 Gmail 中显示所有 PDF 附件的标签名称?
- javascript - JS 非内联版本的 console.collapsedGroup
- uwp - 在桌面应用程序中使用更新的 Windows 10 API
- generics - 没有找到类型的名为 len 的方法
::输入当前范围 - git - 将一堆带有标签的 git 存储库放在一起
- odoo-8 - Odoo 8 使用新 api 继承旧 api 模型的奇怪行为
- javascript - 动态填充 Vuex 状态