2014-03-13 47 views
0

這裏是我的Makefile:提出的是忽略了一些depedencies

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 [email protected] $< 

mknrescs: $(OBJ2) 
    $(CC) $(CFLAGS) -o [email protected] $< 

%.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

自動變量$<表示定義配方的規則的第一個先決條件。

如果要使用所有先決條件,請改用$^

查看Automatic Variables獲取完整列表。

+0

非常感謝。有用。 – Mannix