我有一個不斷拋出的錯誤一個Makefile:沒有規則,使目標 '的Startup.s'
make: *** No rule to make target 'startup.s', needed by 'all'. Stop.
我已經創建了一些變量:
OUT_DIR = ./Build
SOURCE_DIR = ./Src
SOURCES = main.c
SOURCES += startup.s
OBJECTS = $(SOURCES:.c=.o)
OBJECTS += $(SOURCES:.s=.o)
,這裏是我的目標:
all: setup $(OBJECTS)
@echo "Done!"
setup:
@mkdir -p $(OUT_DIR)
%.o : $(SOURCE_DIR)/%.c
@echo "Compiling $<"
$(CC) $(CFLAGS) $< -o $(OUT_DIR)/[email protected]
@echo
%.o : $(SOURCE_DIR)/%.s
@echo "Compiling $<"
$(CC) $(CFLAGS) $< -o $(OUT_DIR)/[email protected]
@echo
爲什麼不能找到startup.s的目標,它應該使用la st target %.o : $(SOURCE_DIR)/%.s
那不是目標。 %.o將成爲目標,並且使找不到與.s文件匹配的文件。 $(SOURCE_DIR)/%。s是依賴項。基本上你需要爲%.s文件制定一個規則 – DTSCode
@DTSCode'.s'文件是源文件。他們沒有建成。製造商將其視爲目標的事實本身就是問題。 –
@EtanReisner的權利,這是因爲他列出它作爲依賴沒有配方 – DTSCode