wyraziłeś aktualizacja z błędu, sprawdź co masz na linii przed tymi ${CC}
poleceń. Wiele programów make
wymaga znaku tabulacji real zanim komendy i edytory, które wprowadzają osiem spacji (na przykład), będą je łamać. To częściej niż nie jest przyczyną błędów "Brakujący separator".
Widać to z następującym transkrypcją. W pliku znajdują się cztery pomieszczenia przed $(xyzzy)
:
xyzzy=echo
all:
$(xyzzy) hello
Więc, kiedy mi się uda, mam ten sam błąd jak ty:
pax> make
makefile:3: *** missing separator. Stop.
Ale kiedy go edytować i obrócić te cztery przestrzenie w karcie, to działa dobrze:
pax> make
echo hello
hello
mieć również problem z drogi, którą próbujesz com pogrupuj pliki źródłowe razem.
Bez -c
flagi do gcc
, będzie starał się stworzyć osobny plik wykonywalny z każdy z tych komend, prawie na pewno prowadzi do błędów łącznikowych. Będziesz potrzebować czegoś podobnego (prosty):
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
lub (nieco bardziej skomplikowane):
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
Problem z pierwszego rozwiązania jest to, że niepotrzebnie kompiluje obu programów, nawet jeśli tylko jeden jest nieaktualne. Drugie rozwiązanie jest trochę bardziej inteligentne.
Co masz na myśli mówiąc "nie działa"? Jakie błędy dostałeś? Co się dzieje? Co się _nie dzieje? – Mat
Czy możesz pokazać nam błąd? – MByD
Przepraszamy, dodaliśmy go teraz. – Kobi