Makefile не находит правила - PullRequest
       1

Makefile не находит правила

0 голосов
/ 18 октября 2018

Мне нужно сделать make-файл, чтобы что-то скомпилировать, но у меня возникла проблема: когда я набираю команду 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 Не могли бы вы помочь мне исправить это?Спасибо:)

1 Ответ

0 голосов
/ 18 октября 2018

Я не вижу -o (спецификатор выходного файла) в конце $(SYS_CFLAGS) или перед common.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).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...