簡體   English   中英

如何在Ruby系統中運行一個ARM多線程程序

[英]How to run an ARM multi-threaded program in Ruby system

我完全實現了以下網頁的內容: 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多線程程序,還是我的編譯選項有誤?

該程序無法在qemu-aarch64和 Ubuntu 20.04 amd64 本機上使用-static運行(始終檢查其他更穩定的平台:-))

眾所周知, -static和線程存在一些非gem5 特定的問題,請參見例如: 當 g++ static 鏈接 pthread 時,導致分段錯誤,為什么?

如果那里提到的解決方法不起作用,您現在也可以使用動態鏈接運行,如在: How to run a dynamically linked executable syscall emulation mode se.py in gem5? 我現在剛剛對其進行了測試,並且它適用於該示例。

最后請注意,存在一個嚴重的多線程 SE Ruby 問題,我們不確定如何解決: https://gem5.atlassian.net/browse/GEM5-676

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM