• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

237
Views
la receta para el objetivo 'todos' falló en Ubuntu 15.10 de 64 bits

1) El programa funciona bien si escribo cada comando en la Terminal con gcc -o file1 file1.c && gcc file2.c -lm -o file2 , y luego ./file1 someArgs ./file2 someArgs

2) También funciona si escribo en Terminal: make rst y make res

3) No funciona escribiendo make en Terminal

Makefile:

 all: check default: check clean: rm -rf file1 file2 rst: gcc -o file1 file1.c && gcc file2.c -lm -o file2 res: ./file1 someArgs ./file2 someArgs check: make clean make rst make res

También probé:

 all: check default: check clean: rm -rf file1 file2 rst: gcc -o file1 file1.c && gcc file2.c -lm -o file2 res: ./file1 someArgs ./file2 someArgs check: clean rst res

Y algunas otras combinaciones con o sin make . Todo el mismo error:

 make: check: Command not found Makefile:2: recipe for target 'all' failed make: *** [all] Error 127
about 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Parece que tiene cierta confusión entre los requisitos previos de una regla de creación y su receta. Los requisitos previos van en la misma línea que el nombre del objetivo; la receta va en la siguiente línea o líneas con tabulación. Así, por ejemplo, esta regla...

 all: check

... dice que el objetivo 'todo' no tiene requisitos previos (por lo que siempre se considera desactualizado), y que la receta para construirlo es ejecutar una check de comando . Lo que parece que realmente quiere es construir el objetivo llamado 'verificar', lo que puede hacer que suceda haciendo que 'verificar' sea un requisito previo de 'todos':

 all: check

En términos más generales, parece que se está acercando al archivo MAKE como si fuera un programa con múltiples puntos de entrada, pero se ve mucho mejor como un conjunto de reglas make puede usar Make para construir cosas. Por lo tanto, es convencional y deseable que las reglas que realmente crean un archivo especifiquen el archivo creado como destino. Además, para usar todo el poder de make , debe expresar los requisitos previos adecuados para esas y otras reglas. Por ejemplo:

 ./file1: file1.c gcc -o file1 file1.c ./file2: file2.c gcc file2.c -lm -o file2 res: ./file1 ./file2 ./file1 someArgs ./file2 someArgs

Si lo hace correctamente, entonces no necesita trucos como eliminar y reconstruir los programas cada vez: make descubrirá si están desactualizados y los reconstruirá cuando sea necesario.

about 3 years ago · Santiago Trujillo Report

0

El primer objetivo all tratando de ejecutar un comando llamado check (y también lo es el objetivo default ). Creo que desea que el comando make se comporte igual que el comando make check y que realice las acciones del objetivo llamado check en el Makefile. En ese caso, agréguelo como una dependencia como esta:

 all: check default: check clean: rm -rf file1 file2 rst: gcc -o file1 file1.c && gcc file2.c -lm -o file2 res: ./file1 someArgs ./file2 someArgs check: make clean make rst make res
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error