鑑於與錯誤的更新,請檢查您必須在這些${CC}
命令前行的。許多make
程序需要一個真實的製表符,然後放入八個空格(例如)的命令和編輯器將打斷它們。這通常不是「缺少分隔符」錯誤的原因。
你可以看到,與以下成績單。在該文件中,也有$(xyzzy)
前4位:
xyzzy=echo
all:
$(xyzzy) hello
所以,當我做了,我得到了同樣的錯誤,你:
pax> make
makefile:3: *** missing separator. Stop.
但是,當我編輯,並把這些四個空格成片,它工作正常:
pax> make
echo hello
hello
你也有你試圖COM的方式有問題將源文件彙集在一起。
沒有一個-c
標誌gcc
,它會嘗試從這些命令中的每個創建一個單獨的可執行文件,幾乎可以肯定導致鏈接錯誤。你會需要這樣的東西(簡單):
CC = gcc
CFLAGS = -Wall -g
# Just compile/link all files in one hit.
demo: demo.c lib.c
${CC} ${CFLAGS} -o demo demo.c lib.c
clean:
rm -f demo
或(稍微複雜):
CC = gcc
CFLAGS1 = -Wall -g -c
CFLAGS2 = -g
# Link the two object files together.
demo: demo.o lib.o
${CC} ${CFLAGS2} -o demo demo.o lib.o
# Compile each source file to an object.
demo.o: demo.c
${CC} ${CFLAGS1} -o demo.o demo.c
lib.o: lib.c
${CC} ${CFLAGS1} -o lib.o lib.c
clean:
rm -f demo
與第一解決方案的問題是,它無需編譯兩個程序即使只有一個已過期。第二種解決方案更智能一點。萬一
demo: lib demo.c
和
${CC} ${CFLAGS} lib.c -c -o lib.o
你是什麼意思的「不工作」?你得到什麼錯誤?發生什麼事?什麼是不發生? – Mat 2012-03-06 09:01:03
你能告訴我們錯誤嗎? – MByD 2012-03-06 09:01:12
對不起,現在加入。 – Kobi 2012-03-06 09:06:52