Makefile
Resuelto
next
Mensajes publicados
43
Fecha de registro
Estado
Miembro
-
next Mensajes publicados 43 Fecha de registro Estado Miembro -
next Mensajes publicados 43 Fecha de registro Estado Miembro -
Hola a todos, he creado un archivo Makefile y tengo varios problemas...
Cuando intento poner un @echo recibo el mensaje
Makefile:16: *** falta separador (¿quiere decir TAB en lugar de 8 espacios?). Parada.
o incluso para clean recibo el mensaje:
make: *** No hay regla para construir el objetivo « rm », necesario para « clean ». Parada.
Aquí está mi código:
OBJS = main.o command.o
LINKOBJET = main.o command.o
BIN = ircweb
CC = gcc
CFLAGS =-W -Wall -ansi -pedantic -D_REENTRANT -std=c99
LDFLAGS=-I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient -lpthread
RM = rm -f
todo: $(BIN) clean
clean: ${RM} $(OBJS) *.c~
$(BIN): $(OBJS)
$(CC) $(LINKOBJET) -o $(BIN) $(LDFLAGS)
main.o: main.c
$(CC): $(CFLAGS) -c main.c -o main.o
command.o: command.c
$(CC): $(CFLAGS) -c command.c -o command.c
@echo fin de la compilación.
¿Pueden ayudarme?
Cuando intento poner un @echo recibo el mensaje
Makefile:16: *** falta separador (¿quiere decir TAB en lugar de 8 espacios?). Parada.
o incluso para clean recibo el mensaje:
make: *** No hay regla para construir el objetivo « rm », necesario para « clean ». Parada.
Aquí está mi código:
OBJS = main.o command.o
LINKOBJET = main.o command.o
BIN = ircweb
CC = gcc
CFLAGS =-W -Wall -ansi -pedantic -D_REENTRANT -std=c99
LDFLAGS=-I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient -lpthread
RM = rm -f
todo: $(BIN) clean
clean: ${RM} $(OBJS) *.c~
$(BIN): $(OBJS)
$(CC) $(LINKOBJET) -o $(BIN) $(LDFLAGS)
main.o: main.c
$(CC): $(CFLAGS) -c main.c -o main.o
command.o: command.c
$(CC): $(CFLAGS) -c command.c -o command.c
@echo fin de la compilación.
¿Pueden ayudarme?
Configuración: Linux Debian Mozilla 1.8.1.10
9 respuestas
-
Después de cada objetivo, cada comando debe estar en una nueva línea y precedido por una tabulación (y no por una secuencia de espacios). Para más información:
https://gl.developpez.com/tutoriel/outil/makefile/
Buena suerte -
gracias, pero ya había leído este tutorial y no me ayuda mucho, lo siento...
¿puedes mostrarme cómo hacerlo en mi Makefile? realmente me ayudaría a entender. -
Bueno, en tu caso, eso se parecería más a:
OBJS = main.o command.o LINKOBJET = main.o command.o BIN = ircweb CC = gcc CFLAGS =-W -Wall -ansi -pedantic -D_REENTRANT -std=c99 LDFLAGS=-I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient -lpthread RM = rm -f all: $(BIN) clean clean: ${RM} $(OBJS) *.c~ $(BIN): $(OBJS) $(CC) $(LINKOBJET) -o $(BIN) $(LDFLAGS) main.o: main.c $(CC) $(CFLAGS) -c main.c -o main.o command.o: command.c $(CC): $(CFLAGS) -c command.c -o command.c @echo fin de la compilación.
(o donde cada línea es una tabulación)
Buena suerte. -
¿Qué ha cambiado entre mi código y el que me diste?
-
He intentado el código y ahora tengo: *** separador faltante. Parada.
-
<5> Los saltos de línea y las tabulaciones
<6> ¿Has puesto bien las tabulaciones?:clean: <TABULACIÓN>${RM} $(OBJS) *.c~ $(BIN): $(OBJS) <TABULACIÓN>$(CC) $(LINKOBJETO) -o $(BIN) $(LDFLAGS) ... -
Acabo de entender con tu última publicación, en realidad hay que usar la tecla tab. Porque ahora funciona sin problemas, ¡gracias de nuevo! :)
-
Perfecto, que te vaya bien :-)
-
Gracias por todo. Para la recapitulación, sube a la parte superior y lee las publicaciones (No sé muy bien cómo recapitular con palabras :) )