Я пытаюсь создать простое ядро с помощью Ubuntu. В терминале я напечаталАрхитектура входного файла i386 несовместима с i386: x86-64
ld -Ttext 0x1000 -o kernel.bin loader.o main.o Video.o
Но я получил следующее сообщение об ошибке в ответ:
ld: i386 architecture of input file `loader.o' is incompatible with i386:x86-64 output
ld: warning: cannot find entry symbol _start; defaulting to 0000000000001000
Это решение. При компиляции/связывании 32-разрядных приложений на x86_64 настройка эмуляции на 'elf_i386' обеспечивает правильный формат эльфа. Так, например, если вы скомпилируете приложение ассемблера с помощью 'nasm -f elf file.asm -o file.o', то команда связи будет' ld -m elf_i386 -o exename file.o'. –
Не забудьте заменить файл '-o file.o'' -o file file.o'. – Ruslan