[英]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.