Судя по информации заголовка мультизагрузки и тому факту, что этот файл связан с выводом двоичного формата (как указано в скрипте компоновщика), говорит мне, что это ядро операционной системы (или, по крайней мере, академический пример 1) и, следовательно, предназначен для компиляции и запуска в автономном режиме, а не в обычном пользовательском пространстве (для управления которым требуется ядро).
ld по умолчанию принимает формат elf (который очень заменяет старый, устаревший формат aout на платформах Unix), вам может потребоваться указать aout в качестве входного формата в сценарии компоновщика (или, в качестве альтернативы, указать nasm для вывода объекта формата elf файлы). multiboot лучше всего работает с elf и не требует всего этого "aout_kludge"
Способ, которым этот код (или любой код ядра) должен был быть выполнен, загружается загрузчиком. Поскольку это ядро совместимо с несколькими загрузками, оно должно было быть загружено загрузчиком, совместимым с несколькими загрузками, таким как grub (см. http://www.gnu.org/software/grub/).
Я понимаю, что вы работаете в Windows, поэтому у вас, вероятно, не установлена система информационной документации на вашем сайте, но вы можете прочитать документацию GNU по адресу http://www.gnu.org/software/grub/manual/multiboot/multiboot.html. Кроме того, похоже, что этот код предназначался для компиляции на Unix-подобной платформе, поэтому, по крайней мере, вы вправе использовать djgpp (gcc перенесен в windows).
Поскольку я работаю над GNU / Linux, мне трудно отлаживать любые проблемы MS windows или djgpp, которые необходимо обойти, возможно, будет полезна информационная документация по GNU ld (часть binutils) - http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_toc.html