Я просмотрел часть этой статьи об OSDev, но на машине с Linux. Во-первых, я должен указать на второе предложение предисловия о том, что вы должны установить GCC кросс-компилятор , поскольку вы работаете на компьютере с Windows. Но я считаю, что именно ваша ошибка относительно выходного файла PE связана с тем, как ld
настроен для Windows против Linux. Linux использует формат ELF для исполняемых файлов, в то время как Windows использует формат PE. Это два совершенно разных способа представления программного / исполняемого файла. Для обучения OSDev вам необходимо связать ядро в формате ELF.
Если вы следуете статье о настройке кросс-компилятора GCC, вам следует перейти к разделу о сборке 'binutils'. Убедитесь, что ваша цель настроена на i586-elf. Продолжайте читать статью, и вы сможете настроить компоновщик ld
для связи с целью ELF вместо формата PE.