[英]Makefile doesn't find the rule
我必須做一個makefile來編譯某些東西,但是我遇到了一個問題:當我輸入make命令時,我收到一條錯誤消息,說目標之一沒有規則。 問題在於使用環境變量到達目標的路徑。
這是Makefile的給定開始位置:
CC = mipsel-unknown-elf-gcc
AS = mipsel-unknown-elf-as
LD = mipsel-unknown-elf-ld
DU = mipsel-unknown-elf-objdump
SYS_OBJS = reset.o \
giet.o \
common.o \
ctx_handler.o \
drivers.o \
exc_handler.o \
irq_handler.o \
sys_handler.o
APP_OBJS = stdio.o main.o
GIET ?= /(my path)/giet
SYS_PATH = $(GIET)/sys
APP_PATH = $(GIET)/app
SYS_CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -I$(SYS_PATH) -I.
APP_CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -I$(APP_PATH) -I.
all: sys.bin app.bin
(我應該完成它)
我嘗試做的事情(sys.bin的規則工作正常):
common.o: common.c
mipsel-unknown-elf-gcc $(SYS_CFLAGS) common.o $(SYS_PATH)/common.c
我用來編譯自己的命令是:mipsel-unknown-elf-gcc -ffreestanding -mno-gpopt -mips32 -I $ GIET / sys -I。 -c -o common.o $ GIET / sys / common.c您能幫我解決這個問題嗎? 謝謝 :)
在$(SYS_CFLAGS)
的末尾或您的規則的命令中的common.o
之前,沒有看到-o
(輸出文件說明符)。 那是您的makefile
和您的手動命令之間的重要區別。
如果沒有該說明符,它將嘗試對common.o
起作用而不是產生它,嘗試將common.o
和$(SYS_PATH)/common.c
為(很可能是) a.out
。
要解決此問題,請將規則更改為:
common.o: common.c
mipsel-unknown-elf-gcc $(SYS_CFLAGS) -o common.o $(SYS_PATH)/common.c
# ^^
# Add this bit here (but not these two comment lines).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.