如何使用Assembly(NASM)引导加载程序编译Rust内核

问题描述 投票:0回答:1

我有一个用NASM编写的简单的2阶段引导加载程序,我想继续使用Rust的操作系统内核。

所以我用Cargo创建了一个夜间Rust项目,并在src / main.rs文件中禁用了std。现在我试图将Assembly文件与Cargo项目链接起来,但没有任何成功。

我应该如何使用Rust内核编译和链接NASM引导程序?

rust operating-system kernel bootloader rust-cargo
1个回答
1
投票

几个小时后,我编译了代码。

解决方案是(像Michael Petch建议的那样),将汇编代码编译成静态.o文件,然后使用xargo和自定义目标编译生锈代码。我将Rust代码编译为静态库,而不是二进制文件,因此输出是.a对象文件,而不是可执行文件。

然后我使用gcc和链接描述文件将目标文件链接在一起,并将结果输出为ELF文件。之后,我使用objcopy-O binary标志将ELF文件复制到.bin文件。最后我用dd创建了一个图像文件,我可以从中启动。

© www.soinside.com 2019 - 2024. All rights reserved.