Respuestas:
Como se indica en el manual en línea , la causa más común de ese error es que las líneas están sangradas con espacios cuando se make
esperan caracteres de tabulación.
target:
\tcmd
donde \t
está TAB (U + 0009)
target:
....cmd
donde cada uno .
representa un ESPACIO (U + 0020).
Solo por sonrisas, y en caso de que alguien más se encuentre con un error similar:
Obtuve el infame error "separador faltante" porque invoqué una regla que define una función como
($eval $(call function,args))
más bien que
$(eval $(call function,args))
es decir, en ($
lugar de $(
.
0x20
"espacio" allí, ¿es correcto?
$
Para mí, el problema era que tenía algunos # ...
comentarios de fin de línea integrados en una define ... endef
definición de variable de varias líneas. Eliminar los comentarios hizo que el problema desapareciera.
define
directiva son tratados literalmente. En realidad, el comportamiento no se explica en la documentación . (Para mayor claridad: Incorporación de un signo de número #
. Dentro de la Directiva no es en sí un error de sintaxis Pero simplemente no se interpreta como un inicio de un comentario, para hacer eso es ciertamente propenso a errores.)
En mi caso, el error causado a continuación. Intenté ejecutar comandos globalmente, es decir, fuera de cualquier objetivo.
UPD Para ejecutar el comando globalmente, uno debe estar formado correctamente. Por ejemplo comando
ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME
se convertiría:
$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
En mi caso, en realidad me faltaba una pestaña en el medio ifeq
y el comando en la siguiente línea. No había espacios para empezar.
ifeq ($(wildcard $DIR_FILE), )
cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
Debería haber sido:
ifeq ($(wildcard $DIR_FILE), )
<tab>cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
Tenga en cuenta que <tab>
es un carácter de tabulación real
Me faltaba el archivo separador en Makefiles generado por qmake. Estaba portando el código Qt a una plataforma diferente. No tenía QMAKESPEC ni MAKE set. Aquí está el enlace encontré la respuesta:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
Aparentemente, todo lo que necesitaba era el paquete "build-essential", luego ejecutar autoconf
primero, lo que hizo que Makefile.pre.in
, ./configure
luego el make
que funciona perfectamente ...
El siguiente código Makefile funcionó:
obj-m = hello.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean