FILES = lab.o
OBJS = $(FILES:.o=.c)
ASMS = $(FILES:.c=.s)
all: lab
lab: $(OBJS)
gcc -o lab $(OBJS)
asmfiles: $(ASMS)
%.o: %.c
gcc -c $< -o $@
%.s: %.c
gcc -S $< -o $@
clean:
rm -f *.o *.s
当运行make clean,然后make,我一直在
make: *** No rule to make target `lab', needed by `all'. Stop.
我尝试过使用lab.lab实验室。 lab.o文件。关于使用没有.c文件的makefile,我找不到太多信息。
很难过。
答案 0 :(得分:1)
您的makefile没有指定如何处理.asm
文件,也没有说明使用NASM作为汇编程序。
这是一个小例子makefile,它将使用NASM作为汇编程序和LD(来自GNU binutils)作为链接器,从汇编文件lab
构建名为lab.asm
的可执行文件。随意修改/扩展它:
TARGET = lab
FILES = lab.asm
OBJS = $(FILES:.asm=.o)
NASM = nasm
ASM_FLAGS = -f elf64
LD = ld
all : $(TARGET)
lab: $(OBJS)
$(LD) -o $(TARGET) $(OBJS)
%.o : %.asm
$(NASM) $(ASM_FLAGS) -o $@ $<