Estoy pasando por un pgm por ejemplo para crear un archivo make.
http://mrbook.org/tutorials/make/
Mi carpeta eg_make_creation contiene los siguientes archivos,
desktop:~/eg_make_creation$ ls
factorial.c functions.h hello hello.c main.c Makefile
Makefile
# I am a comment, and I want to say that the variable CC will be
# the compiler to use.
CC=gcc
# Hwy!, I am comment no.2. I want to say that CFLAGS will be the
#options I'll pass to the compiler
CFLAGS=-c -Wall
all:hello
hello:main.o factorial.o hello.o
$(CC) main.o factorial.o hello.o -o hello
main.o:main.c
$(CC) $(CFLAGS) main.c
factorial.o:factorial.c
$(CC) $(CFLAGS) factorial.c
hello.o:hello.c
$(CC) $(CFLAGS) hello.c
clean:
rm -rf *o hello
error:
desktop:~/eg_make_creation$ make all
make: Nothing to be done for `all'.
Ayúdame a comprender cómo compilar este programa.

helloestá actualizado. Cambiecleanarm -f *.o helloantes de que haga algo inesperado, luego ejecutemake clean ally vea si funciona..phony: all clean, ya queallycleanno son nombres de archivo.Respuestas:
A veces, el error "No hay nada que hacer para todos" puede ser causado por espacios antes del comando en la regla del archivo Make en lugar de la pestaña. Asegúrese de utilizar tabulaciones en lugar de espacios dentro de sus reglas.
en vez de
Consulte el manual de GNU make para ver la descripción de la sintaxis de la regla: https://www.gnu.org/software/make/manual/make.html#Rule-Syntax
fuente
all : src/server/mod_wsgi.la, a lo que me cambiéall : </t> src/server/mod_wsgi.la. Ahora aparece el error:make: execvp: src/server/mod_wsgi.la: Permission denied Makefile:29: recipe for target 'all' failed make: *** [all] Error 127aftersudo make. ¿Alguna ayuda?Eliminar el
helloarchivo de tu carpeta y vuelve a intentarlo.El
allobjetivo depende delhelloobjetivo. Elhelloobjetivo primero intenta encontrar el archivo correspondiente en el sistema de archivos. Si lo encuentra y está actualizado con los archivos dependientes, no hay nada que hacer.fuente
Cuando simplemente da make, hace la primera regla en su archivo make, es decir, "todos". Ha especificado que "todos" depende de "hola", que depende de main.o, factorial.o y hola.o. Entonces 'make' intenta ver si esos archivos están presentes.
Si están presentes, 'make' ve si sus dependencias, por ejemplo, main.o tiene una dependencia main.c, han cambiado. Si han cambiado, haga las reconstrucciones; de lo contrario, se salta la regla. De manera similar, continúa construyendo de manera recursiva los archivos que han cambiado y finalmente ejecuta el comando más alto, "todos" en su caso para darle un ejecutable, 'hola' en su caso.
Si no están presentes, construye a ciegas todo según la regla.
Llegando a su problema, no es un error, pero 'make' dice que cada dependencia en su archivo MAKE está actualizada y no necesita hacer nada.
fuente
Make se está comportando correctamente.
helloya existe y no es más antiguo que los.carchivos, por lo que no hay más trabajo por hacer. Hay cuatro escenarios en los que make deberá (re) construirse:.carchivos, será más reciente quehello, y luego tendrá que reconstruirse cuando ejecute make.hello, obviamente tendrá que reconstruirlo-Bopción.make -B allmake clean alleliminaráhelloy requerirá una reconstrucción. (Te sugiero que veas el comentario de @ Mat sobrerm -f *.o hellofuente
Creo que te perdiste una pestaña en la novena línea. La línea que sigue a todos: hola debe ser una pestaña en blanco. Asegúrese de tener una pestaña en blanco en la novena línea. Hará que el intérprete comprenda que desea utilizar la receta predeterminada para el archivo MAKE.
fuente
Eso no es un error; el comando make en Unix funciona según las marcas de tiempo. Es decir, digamos que si ha realizado ciertos cambios
factorial.cppy compila utilizandomake, make muestra la información de que solocc -o factorial.cppse ejecuta el comando. La próxima vez, si ejecuta el mismo comando, es decir,makesin realizar ningún cambio en ningún archivo con.cppextensión, el compilador dice que el archivo de salida está actualizado. El compilador proporciona esta información hasta que realizamos ciertos cambios en algunofile.cpp.La ventaja de
makefilees que reduce el tiempo de recompilación compilando los únicos archivos que se modifican y utilizando los.oarchivos object ( ) de los archivos no modificados directamente.fuente
Llegué a este error peculiar y difícil de depurar a través de una ruta diferente. Mi problema terminó siendo que estaba usando una regla de patrón en un paso de compilación cuando el objetivo y la dependencia estaban ubicados en directorios distintos. Algo como esto:
Tenía varias dependencias configuradas de esta manera y estaba tratando de usar una receta de patrón para todas. Claramente, una sola sustitución de "%" no va a funcionar aquí. Hice reglas explícitas para cada dependencia, ¡y me encontré de nuevo entre los cachorros y los unicornios!
¡Espero que esto ayude a alguien!
fuente