Недавно я пытался начать писать ядро на 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
Но я работаю над окнами и использую компилятор Digital Mars вместе с компоновщиком OPTLINK, который поставляется вместе с ним.Я пробовал, но основные проблемы:
- Это включает в себя файлы операционной системы, которые мне не нужны (даже после добавления переключателя NL)
- Это генерирует файл .COM ине плоский двоичный файл
Я был бы очень благодарен вам, если бы вы могли помочь мне с этим.