最近我试图开始在C中为我的16位操作系统编写内核 . 我所拥有的是两个文件:kernel_entry.asm,它调用“main”,它被声明为extern,其定义出现在kernel.c中 . 在以elf格式单独编译它们时,我得到kernel_entry.o和kernel.o现在我要做的是将它们链接在一起并创建一个可以直接加载到内存中的原始二进制文件 . 我知道使用ld我们可以通过以下方式轻松完成:

$ld -o kernel.bin -Ttext 0x100 kernel_entry.o kernel.o --oformat binary

但我正在使用Windows并使用Digital Mars Compiler以及随附的OPTLINK链接器 . 我尝试过,但主要问题是

  • 包含我不需要的操作系统文件(即使添加NL开关后)

  • 它正在生成.COM文件而不是平面二进制文件

如果你能帮助我,我将非常感谢你 .