make忽略了一些依赖

时间:2014-03-13 18:54:28

标签: makefile

这是我的Makefile:

CC=gcc
CFLAGS=-Wall -std=gnu99
OBJ1=mknlrescs.o collisionsys.o csheader.o utils.o labels.o csdata.o 
OBJ2=mknrescs.o utils.o

all: mknlrescs mknrescs

mknlrescs: $(OBJ1)
$(CC) $(CFLAGS) -o $@ $<

mknrescs: $(OBJ2)
    $(CC) $(CFLAGS) -o $@ $<

%.o: %.c %.h
    $(CC) $(CFLAGS) -c $<

当我输入make mknlrescs时,我会收到以下信息:

$ make mknlrescs
gcc -Wall -std=gnu99   -c -o mknlrescs.o mknlrescs.c
gcc -Wall -std=gnu99 -c collisionsys.c
gcc -Wall -std=gnu99 -c csheader.c
gcc -Wall -std=gnu99 -c utils.c
gcc -Wall -std=gnu99 -c labels.c
gcc -Wall -std=gnu99 -c csdata.c
gcc -Wall -std=gnu99 -o mknlrescs mknlrescs.o -lm
mknlrescs.o: In function `main':
mknlrescs.c:(.text+0x4b): undefined reference to...

还有一堆其他“未定义的引用......”错误。

其他对象未被链接。注意它只链接了第一个目标文件。我怎么能纠正这个?

1 个答案:

答案 0 :(得分:1)

自动变量$<代表定义配方的规则的第一个先决条件。

如果您想使用所有先决条件,请改用$^

有关完整列表,请参阅Automatic Variables