我正在爲教育目的編寫一個ARM嵌入式Rust程序。 由於它是裸機系統,因此我只使用核心庫。該庫的手冊頁宣稱corelib完全依賴於任何內容,但memcpy
,memcmp
和memset
以及展開函數(請參閱https://doc.rust-lang.org/core/index.html)。 但是,特別是如果我使用atomic types,由於缺少符號(例如__sync_val_compare_and_swap_4
或__sync_lock_test_and_set_4
),我繼續得到鏈接程序錯誤,這表示缺少compiler-rt庫。我明白,編譯器rt應該在corelib之上。這看起來像循環依賴,不應該是。此外,我明白編譯器rt依次取決於操作系統。瞭解Rust庫的依賴關係
- 我的理解是什麼部分是不正確的?
- 我該如何獲得一個真正的獨立Corelib,或者它的哪些部分真的是獨立的?我知道我可以重新實現缺失的功能,但它們似乎相當多。另外,我知道compiler-builtins crate,但它仍然給我留下了未解決的符號。
'__sync_val_compare_and_swap_4' * not *由compiler-rt提供。鏈接到'libgcc_s'工作嗎? (參考http://stackoverflow.com/a/9329139/224671) – kennytm
@kennytm:還沒有,我不知道我是否有目標平臺,但我會試一試。但是,llvm應該需要libgcc_s有點奇怪。 – Matthias
鏈接的問題使用GCC 4,我不知道什麼是LLVM等價物:) – kennytm