我正在为ARM编写一个嵌入式Rust程序,用于教育目的。
由于这是一个裸机系统,所以我只使用核心库。该库的手册页面声称corelib除了memcpy
, memcmp
, 和 memset
以及取消操作函数(见https://doc.rust-lang.org/core/index.html)之外不依赖任何东西。
然而,特别是当我使用原子类型时,由于缺少符号(例如__sync_val_compare_and_swap_4
或__sync_lock_test_and_set_4
),我仍然会遇到链接器错误,指示缺少compiler-rt库。我理解,compiler-rt应该在corelib之上。这看起来像一个循环依赖,这是不应该的。此外,我了解到,compiler-rt反过来又依赖于操作系统。
- 我的理解中哪部分是不正确的?
- 如何获得真正独立的corelib,或者它的哪些部分是真正独立的? 我知道我可以重新实现缺失的函数,但它们似乎很多。此外,我知道compiler-builtins crate,但它仍然留下了未解决的符号。
__sync_val_compare_and_swap_4
不被compiler-rt提供。连接到libgcc_s
是否可行?(参考https://dev59.com/8mDVa4cB1Zd3GeqPeYyI#9329139) - kennytm