2013-12-12 18 views
2

我有3個文件main.c,lists.clists.h試圖做一個簡單的Makefile失敗

我試着寫一個Makefile中的所有文件都在同一目錄:

maman21: lists.c lists.h main.c 
    gcc -g -Wall -ansi main.c -o maman21 -lm 

通過終端去到該文件夾​​,並使用make我顯示了這個消息:

gcc -g -Wall -ansi main.c -o maman21 -lm 
Undefined symbols for architecture x86_64: "_linkedListWay", 
referenced from: 
     _main in main-C9dUT4.o "_reallocWay", referenced from: 
     _main in main-C9dUT4.o ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to 
see invocation) 
make: *** [maman21] Error 1 

reallocWaylinkedListWay是我在文件中使用的函數。

謝謝你的幫助。

回答

2

您在編譯器調用中未包含lists.c文件,因此無法生成。

它應該是:以上

CFLAGS=-g -Wall -ansi 
LDLIBS=-lm 

maman21: main.o lists.o 

main.o: main.c 

lists.o: lists.c lists.h 

使用隱式的Makefile規則,它「知道」如何將C文件轉換爲對象(.o)文件。

此外,Clang被稱爲gcc是否正常?

+0

OS X提供了一個'gcc'實際上是'clang'的二進制文件。 –

+0

gcc在哪裏? 對於這個愚蠢的問題感到抱歉,它似乎只創建目標文件並且不運行它們 – Yevgeni