Подтвердить что ты не робот

Архитектура входного файла i386 несовместима с i386: x86-64

Я пытаюсь создать простое ядро ​​с помощью Ubuntu. В терминале я набрал

    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
4b9b3361

Ответ 1

Если вы хотите скомпилировать файл как 32-битный, вы можете использовать:

ld -m elf_i386 -s -o file file.o

Ответ 2

Используйте 64 бита вместо 32 для вашего загрузчика и скомпилируйте его с помощью следующей команды:

nasm -f elf64 loader.asm -o loader.o

Это должно решить вашу ошибку

Ответ 3

При компиляции/связывании 32-разрядных приложений на x86_64 настройка эмуляции на elf_i386 обеспечивает правильный формат эльфа. Так, например, если вы скомпилируете ассемблер с nasm -f elf file.asm -o file.o, команда link ld -m elf_i386 -o exename file.o Courtesy: David