#makefile #compiler-errors
Вопрос:
Ошибка:
сделайте: *** Нет правила для создания целевого объекта «сборка-x86_64». Остановка.
Мой файл создания:
x86_64_asm_source_files := $(shell find src/impl/x86_64 -name *.asm)
x86_64_asm_object_files := $(patsubst src/impl/x86_64/%.asm, build/x86_64/%.o, $(x86_64_asm_source_files))
$(x86_64_asm_object_files): build/x86_64/%.o : src/impl/x86_64/%.asm
mkdir -p $(dir $@) amp;amp;
nasm -f elf64 $(patsubst build/x86_64/%.o, src/impl/x86_64/%.asm, $@) -o $@
.PHONY: build-x86_64
build-x86_64: $(x86_64_asm_object_files)
mkdir -p dist/x86_64 amp;amp; .
x86_64-elf-ld -n -o dist/x86_64/kernel.bin -T targets/x86_64/linker.ld $(x86_64_asm_object_files) amp;amp;
cp dist/x86_64/kernel.bin targets/x86_64/iso/boot/kernel.bin amp;amp;
grub-mkrescue /usr/lib/grub/i386-pc -o dist/x86_64/target.iso targets/x86_64/iso
Комментарии:
1. Каково имя файла этого файла makefile? Какую командную строку вы использовали для вызова make? Мне кажется
make
, что он не использует этот файл makefile.2. 1. «Файл создания» (это единственный файл создания в моем проекте.). 2. Я использую Docker.
3. Я не знаю, что вы подразумеваете под «Я использую Докер» (я знаю, что такое Докер, просто это не помогает мне решить вашу проблему).
make
Команда не может найти этот файл makefile (я подозреваю). make будет искать файл makefile в рабочем каталоге, в котором он запущен. Если make не может найти файл makefile, то каталог, в котором вы его запускаете, не является каталогом, содержащим файл makefile… или имя файла makefile-это что-то другое, но вы говорите,Makefile
что это нормально, поэтому это должен быть неправильный каталог.4. О! Вот что я имел в виду:
PS C:Hope OS> docker run --rm -it -v /root/env hopeos-buildenv root@7c0ee0e138ac:~/env# make build-x86_64
/root/env-это место, где находится мой файл makefile и остальная часть моего кода src5. Основываясь на предоставленной информации, вы не можете объяснить ошибку, которую вы видите, поэтому здесь должно происходить что-то еще, чего мы не видим. Вы можете попробовать запустить
make -p
so, чтобы распечатать свою базу данных и посмотреть на вывод, чтобы увидетьbuild-x86_64
, есть ли цель. Вы можете запуститьmake -d
, чтобы увидеть все, что делает make (он напечатает много материала, поэтому, вероятно, перенаправит его в файл, а затем используетless
или что-то еще для его просмотра), включая файлы, которые он находит.