Entrada Makefile simple y fácil de entender (12) - Mensajes de error comunes de Makefile

1. Mensajes de error comunes

makeDurante la ejecución del error no siempre es fatal, especialmente ante la presencia de la línea de comando -, o makeusando la -kopción de realizar.
makeLos errores fatales en el proceso de ejecución van precedidos de una cadena ***. Los mensajes de error tienen el prefijo, uno es la implementación de un nombre de programa como un error de prefijo (generalmente make); el otro es cuando Makefilehay un error de sintaxis en sí mismo no se puede makeanalizar y ejecutar, los prefijos contienen Makefileel nombre del archivo y el número de línea de errores.

En la siguiente lista de errores, se omite el prefijo común:

[FOO] Error NN
[FOO] signal description

Tales errores no son makerealmente errores. Representa makedetectado makecomo un comando de ejecución de programa que devuelve un estado invocado distinto de cero (Error NN), o un comando para salir del programa de manera irregular (llevando cierta señal).
Si el mensaje de error no tiene ***cadenas adicionales , se invoca el subproceso falla, si Makefileel comando tiene un prefijo -, makeignorará este error.

  1. separador faltante.
missing separator. Stop.
missing separator (did you mean TAB instead of 8 spaces?). Stop.

Error: la makelectura de la línea de comandos no reconocida Makefileno puede interpretar el contenido que contiene el proceso. GNU makeLeer MakefileSegún varios delimitador ( :, =, [TAB]personajes, etc.) para identificar Makefileel contenido de cada línea. Estos errores hacen que makeno se pueda encontrar un delimitador válido.
Estos mensajes de error parecen probablemente la razón es que (quizás editor, en su mayoría editores de ms-windows) en Makefileel uso de cuatro (u ocho) espacios en lugar de antes del [Tab]carácter de comando . En este caso, se generará la segunda forma de mensaje de error mencionada anteriormente. Y recuerde, todas las filas son comandos deben [Tab]comenzar con los caracteres.

  1. los comandos comienzan antes del primer objetivo
commands commence before first target. Stop.

MakefilePuede basarse en la línea de comando para comenzar: los [Tab]caracteres comienzan, pero no en una línea de comando legal (por ejemplo, asignar una variable). La línea de comando debe corresponder a la regla uno a uno.

  1. regla faltante
missing rule before commands. Stop.

La causa del error podría ser que el primer carácter no en blanco de la línea sea un punto y coma, makepensaría que falta aquí la target: prerequisitesección de reglas .

  1. Sin regla
No rule to make target 'XXX'.
No rule to make target 'XXX ', needed by 'yyy'.

No se pueden encontrar reglas adecuadas para el objetivo de reconstrucción "XXX", incluidas reglas explícitas e implícitas.
Este método de corrección de errores es: Makefileagregar objetivos de reconstrucción de una regla. Otra posible causa es que la causa de estos errores Makefileen el nombre del archivo esté mal escrito, o destruya el árbol del archivo de origen (un archivo no se puede reconstruir, probablemente debido a problemas de dependencia del archivo).

  1. Sin objetivos
No targets specified and no makefile found. Stop.
No targets. Stop.

El primer error indica que no es necesario reconstruir el destino designado en la línea de comando y makeno puede leer ningún Makefilearchivo.
El segundo error indica que se pudo encontrar Makefileel archivo, pero no el objetivo final o ningún objetivo señaló la necesidad de reconstruir la línea de comandos. En este caso, makeno se hace nada.

  1. Makefile no encontrado.
Makefile 'XXX' was not found.
Included makefile 'XXX' was not found.

No utilizar -fel Makefilearchivo especificado makeno se puede encontrar de forma predeterminada en el directorio actual Makefile( makefileo GNUmakefile). Utilice -fel archivo especificado, pero no puede leer el Makefilearchivo especificado .

  1. comandos primordiales para el objetivo
warning: overriding commands for target 'XXX'

El mismo objetivo XXXhay más que un comando de reconstrucción. GNU make estipula que cuando se usa el mismo archivo como destino de varias reglas, solo una regla puede definir el comando para reconstruirlo (excepto la regla de los dos puntos). Si se especifican varios comandos iguales o diferentes para un objetivo, se generará la primera alarma;

  1. ignorando los comandos antiguos para el objetivo
warning: ignoring old commands for target 'XXX'

El mensaje de advertencia dice que el comando recién especificado sobrescribe el último comando especificado.

  1. dependencia eliminada
Circular XXX <- YYY dependency dropped.

La regla de dependencia produjo un ciclo: XXXdependencias de destino YYYy la YYYlista de dependencias de dependencia también contiene XXX.

  1. La variable recursiva se hace referencia a sí misma
Recursive variable 'XXX' references itself (eventually). Stop.

makeLa variable de XXX(expansión recursiva) se refiere a sí misma cuando reemplaza la expansión. Ambos para la variable de expansión directa (mediante :=o definiciones adicionales definidas) ( +=), que no están permitidas.

  1. Referencia de variable no terminada
Unterminated variable reference. Stop.

La sintaxis de referencia de variable o función es incorrecta, no se utilizan paréntesis completos (faltan paréntesis izquierdo o derecho).

  1. argumentos insuficientes para funcionar
insufficient arguments to function 'XXX'. Stop.

La función XXXal referirse al número de parámetros es incorrecta. A la función le faltan parámetros.

  1. errores relacionados con el patrón
missing target pattern. Stop.
multiple target patterns. Stop.
target pattern contains no '%'. Stop.             
mixed implicit and static pattern rules. Stop.

Reglas incorrectas del modo estático.
El motivo del primer error es: no hay un objetivo de modo en el segmento de destino de la regla de modo estático;
el motivo del segundo error es: hay varios objetivos de modo en el segmento de destino de la regla de modo estático;
el motivo de la El tercer error es: modo estático El patrón de destino de la regla no contiene el carácter de patrón "%", la
cuarta razón del error es: las tres partes de la regla de patrón estático contienen todas el carácter de patrón "%". Debería ser correcto que solo los dos últimos pueden contener el carácter de patrón "%".

  1. -jN forzado en submake
warning: -jN forced in submake: disabling jobserver mode.

Se trata de una alarma y se produce el mensaje de alarma: se makedetecta una makellamada recursiva , la comunicación puede ser un sub- makeerror. Realizado de forma recursiva, makehay un parámetro de línea de comando para -jNel parámetro (el valor de N es mayor que 1), y en algunos casos esto puede dar lugar a errores,
por ejemplo: Makefilela variable MAKEestá asignada make –j2y las variables de la línea de comando se utilizan en una llamada recursiva MAKE. En este caso, el makeproceso llamado y no otros makeprocesos para comunicarse, solo pueden ser dos simples tareas de procesamiento paralelo independientes.

  1. servidor de trabajo no disponible
warning: jobserver unavailable: using -j1. Add '+' to parent make rule.

Para una makecomunicación real entre procesos, el makeproceso superior pasa información al makeproceso hijo . Hay en el proceso de transmisión de información en este caso puede ser, el makeproceso del niño no es un makeproceso real , mientras que la capa superior makeno puede determinar si el niño es un makeproceso real .
Simplemente transmite toda la información. La capa superior makeutiliza el algoritmo normal para determinar estos. Cuando esto sucede, el proceso hijo solo recibirá parte de la información útil transmitida por el proceso padre. El proceso hijo generará el mensaje de advertencia y luego lo procesará de acuerdo con su secuencia incorporada.

Supongo que te gusta

Origin blog.csdn.net/wohu1104/article/details/111086148
Recomendado
Clasificación