无法弄清楚如何让makefile只使用.asm文件和.o文件

时间:2015-06-23 13:52:09

标签: assembly makefile

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,我找不到太多信息。

很难过。

1 个答案:

答案 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 $@ $<