我有一个用NASM编写的简单的2阶段引导加载程序,我想继续使用Rust的操作系统内核。
所以我用Cargo创建了一个夜间Rust项目,并在src / main.rs文件中禁用了std。现在我试图将Assembly文件与Cargo项目链接起来,但没有任何成功。
我应该如何使用Rust内核编译和链接NASM引导程序?
几个小时后,我编译了代码。
解决方案是(像Michael Petch建议的那样),将汇编代码编译成静态.o
文件,然后使用xargo
和自定义目标编译生锈代码。我将Rust代码编译为静态库,而不是二进制文件,因此输出是.a
对象文件,而不是可执行文件。
然后我使用gcc
和链接描述文件将目标文件链接在一起,并将结果输出为ELF文件。之后,我使用objcopy
与-O binary
标志将ELF文件复制到.bin文件。最后我用dd
创建了一个图像文件,我可以从中启动。