Dada su actualización con el error, comprobar lo que tiene en la línea antes de que esos ${CC}
comandos. Muchos programas make
requieren un real carácter de tabulación antes de que los comandos y editores que ponen en ocho espacios (por ejemplo) los rompan. A menudo, eso es la causa de los errores del "separador perdido".
Puede verlo con la siguiente transcripción. En el archivo, hay cuatro espacios antes del $(xyzzy)
:
xyzzy=echo
all:
$(xyzzy) hello
lo tanto, cuando lo hago, me sale el mismo error que tú:
pax> make
makefile:3: *** missing separator. Stop.
Pero, cuando edito y convertir esos cuatro espacios en una pestaña, que funciona bien:
pax> make
echo hello
hello
también tiene un problema con la forma en que está tratando de com bine los archivos fuente juntos.
Sin una bandera -c
a gcc
, que tratará de crear un ejecutable independiente de cada de esos comandos, es casi seguro que conduce a errores de enlace. Usted va a necesitar algo así como (simple):
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
o (un poco más compleja):
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
El problema con la primera solución es que innecesariamente elabora los dos programas, incluso cuando sólo uno esta fuera de fecha. La segunda solución es un poco más inteligente.
¿Qué quiere decir con "not working"? ¿Qué errores estás obteniendo? ¿Que esta pasando? ¿Qué no está pasando? – Mat
¿Puede mostrarnos el error? – MByD
Lo siento, lo he añadido ahora. – Kobi