簡體   English   中英

Makefile找不到規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM