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