Makefile не может создать фрагмент кода сборки, который я создаю - PullRequest
0 голосов
/ 05 ноября 2018

Я следовал руководству, чтобы сделать простую операционную систему для малинового пи здесь . Он работал нормально, хотя мне пришлось поменять его на использование WinGW, а не на yagarto, потому что yagarto перестал работать должным образом, но затем он неожиданно начал просто выдавать ошибку, когда я пытаюсь создать файл, даже если я делаю это по старому стилю. кода, который раньше работал, так что это очень запутанно. У меня есть файлы с именами gpio.s, main.s и systemTimer.s. Это мой make-файл:

###############################################################################
#   makefile
#    by Alex Chadwick
#
#   A makefile script for generation of raspberry pi kernel images.
###############################################################################

# The toolchain to use. arm-none-eabi works, but there does exist 
# arm-bcm2708-linux-gnueabi.
ARMGNU ?= arm-none-eabi

# The intermediate directory for compiled object files.
BUILD = build/

# The directory in which source files are stored.
SOURCE = source/

# The name of the output file to generate.
TARGET = kernel.img

# The name of the assembler listing file to generate.
LIST = kernel.list

# The name of the map file to generate.
MAP = kernel.map

# The name of the linker script to use.
LINKER = kernel.ld

# The names of all object files that must be generated. Deduced from the 
# assembly code files in source.
OBJECTS := $(patsubst $(SOURCE)%.s,$(BUILD)%.o,$(wildcard $(SOURCE)*.s))

# Rule to make everything.
all: $(TARGET) $(LIST)

# Rule to remake everything. Does not include clean.
rebuild: all

# Rule to make the listing file.
$(LIST) : $(BUILD)output.elf
    $(ARMGNU)-objdump -d $(BUILD)output.elf > $(LIST)

# Rule to make the image file.
$(TARGET) : $(BUILD)output.elf
    $(ARMGNU)-objcopy $(BUILD)output.elf -O binary $(TARGET) 

# Rule to make the elf file.
$(BUILD)output.elf : $(OBJECTS) $(LINKER)
    $(ARMGNU)-ld --no-undefined $(OBJECTS) -Map $(MAP) -o $(BUILD)output.elf -T $(LINKER)

# Rule to make the object files.
$(BUILD)%.o: $(SOURCE)%.s $(BUILD)
    $(ARMGNU)-as -I $(SOURCE) $< -o $@

$(BUILD):
    mkdir $(@:/=)

# Rule to clean files.
clean : 
    -rm -rf $(BUILD)
    -rm -f $(TARGET)
    -rm -f $(LIST)
    -rm -f $(MAP)

, и если я запускаю это, вызывая make.exe, возникает эта ошибка:

process_begin: CreateProcess(NULL, arm-none-eabi-as -I source/ source/main.s -o build/main.o, ...) failed.
make (e=2): The system cannot find the file specified.
Makefile:54: recipe for target 'build/main.o' failed
make: *** [build/main.o] Error 2

Раньше он запускался без ошибок, и я почти уверен, что ничего не записал, поэтому пытаюсь понять, что пошло не так. Любая помощь будет оценена.

...