我正在使用Rust在嵌入式设备上开发项目,试图编写可以从C中调用的Rust函数。我按照这篇教程的步骤,在不使用标准库的情况下编译项目:Embedded Rust Right Now!。
我的Rust代码可以成功编译为.o文件,但是当我尝试使用arm-none-eabi-ld将C和Rust目标文件链接在一起时,我遇到了几个类似于以下的错误:
我的Rust代码可以成功编译为.o文件,但是当我尝试使用arm-none-eabi-ld将C和Rust目标文件链接在一起时,我遇到了几个类似于以下的错误:
rustfunc.o: In function `func':
rustfunc.0.rs:(.text.hash+0x18): undefined reference to `__aeabi_memclr8'
...
/rust/src/libcore/slice.rs:1446: undefined reference to `__aeabi_memcpy'
/rust/src/libcore/fmt/num.rs:196: undefined reference to `__aeabi_memclr4'
我最困惑的是,尽管我只是将目标文件链接在一起,但错误信息涉及到了我的Rust代码和libcore中的代码。
有人知道这些错误的含义以及为什么链接器无法解决这些问题吗?谢谢!
memclr
(memset
的特殊变体)和memcpy
的一些libgcc特殊版本。 - too honest for this site