XV6 make file выдает нераспознанный режим эмуляции: -N при попытке сделать xv6 в Windows

$ make qemu-nox
ld -m  -N -e main -Ttext 0 -o _cat cat.o ulib.o usys.o printf.o umalloc.o
C:\MinGW\bin\ld.exe: unrecognised emulation mode: -N
Supported emulations: i386pe
make: *** [_cat] Error 1

Я продолжаю получать эту ошибку, хотя установил QEMU и шаг за шагом следовал этому руководству: Другой вопрос SO.

Любые предложения о том, как заставить эту работу работать?


person Majed Jendi    schedule 15.11.2019    source источник


Ответы (1)


Кажется, что строка действительно ведет себя так, как нужно:

 LDFLAGS += -m $(shell $(LD) -V | grep elf_i386 2>/dev/null | head -n 1)

Как видите, эта строка создает командную строку для ld и пытается включить режим эмуляции (-m) для elf.

Похоже, ваш ld не поддерживает такие исполняемые файлы.

Так что ты можешь сделать?

  • Вы можете попробовать удалить LDFLAGS, чтобы использовать режим эмуляции по умолчанию (i386pe), но я не думаю, что это сработает.
  • Вы можете установить версию ld, поддерживающую двоичный файл elf. После его установки у вас обязательно будет исполняемый файл с именем i386-elf-ld, если да, запустите сборку с TOOLPREFIX=i386-elf- make qemu-nox
person Mathieu    schedule 16.01.2020