Saltar al contenido

¿Falta separador en Makefile?

No dudes en compartir nuestro espacio y códigos en tus redes sociales, necesitamos de tu ayuda para ampliar esta comunidad.

Solución:

Dada su actualización con el error, verifique lo que tiene en la línea antes de esos $CC comandos Muchos make programas requieren un real carácter de tabulación antes de que los comandos y editores que ponen ocho espacios (por ejemplo) los rompan. Esa es la mayoría de las veces la causa de los errores de “Separador faltante”.

Puedes verlo con la siguiente transcripción. En el archivo, hay cuatro espacios antes de la $(xyzzy):

xyzzy=echo
all:
    $(xyzzy) hello

Entonces, cuando lo hago, obtengo el mismo error que tú:

pax> make
makefile:3: *** missing separator.  Stop.

Pero, cuando lo edito y convierto esos cuatro espacios en una pestaña, funciona bien:

pax> make
echo hello
hello

También tiene un problema con la forma en que intenta combinar los archivos de origen.

Sin un -c bandera a gccintentará crear un ejecutable separado de cada de esos comandos, lo que casi seguramente conduce a errores del enlazador. Vas a necesitar algo 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 complejo):

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 compila innecesariamente ambos programas incluso cuando solo uno está desactualizado. La segunda solución es un poco más inteligente.

Echas de menos alguna “ficha” (t) antes de $CC ¿por casualidad?

A menudo, mi editor reemplaza las pestañas por espacios y recibo este mensaje.

CC = gcc
CFLAGS = -Wall -g

demo:
[TAB]$CC $CFLAGS demo.c -o demo
lib:
[TAB]$CC $CFLAGS lib.c -o lib
clean:
[TAB]rm -f lib demo

valoraciones y comentarios

Tienes la opción de animar nuestra publicación fijando un comentario y puntuándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *