c - examples - makefile java
makefile: 4:*** separador perdido. Detener (8)
El punto clave fue "HARD TAB" 1. Verifique si usó TAB en lugar de espacios en blanco 2. Revise su .vimrc para "set tabstop = X"
Este es mi makefile:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
/rm -fr ll
Cuando intento make clean
o make make
, recibo este error:
:makefile:4: *** missing separator. Stop.
¿Cómo puedo arreglarlo?
En VS Code, simplemente haga clic en "Espacio: 4" en la esquina recta y cámbiela a la pestaña al editar su Makefile.
Es una pregunta bastante antigua, pero aún me gustaría decir acerca de una opción más usando el editor vi/vim
para visualizar las pestañas. Si tiene vi/vim
instalado, abra un Makefile
(por ejemplo, vim Makefile
) e ingrese :set list
. Esto mostrará el número de pestañas insertadas como a continuación,
%-linux: force$
^I@if [ "$(GCC_VERSION)" = "2.96" ] ; then /$
^I^Iecho ===== Generating build tree for legacy $@ architecture =====; /$
^I^I$(CONFIGURE) $(CWD) $@ legacy; /$
^Ielse /$
^I^Iecho ===== Generating build tree for $@ architecture =====; /$
^I^I$(CONFIGURE) $(CWD) $@; /$
^Ifi$
^Icd build-$@;make$
Esto se debe a que la pestaña es reemplazada por espacios. Para deshabilitar esta característica vaya a
gedit-> editar-> preferencias-> editor
y remover cheque para
" reemplazar pestaña con espacio "
Si alguno de ustedes está utilizando un producto de Intellij, la solución para esto es la siguiente:
- Vaya a Preferencias> Editor> Estilo de código
- Aquí debe seleccionar el tipo de archivo relacionado con su problema. Pero lo más probable es que necesite seleccionar
Other File Types
. - En la pestaña abierta, marque la casilla de verificación
Use tab character
y tenga cuidado, elTab size
y los valores deIndent
deben ser 4.
Siempre debe escribir el comando después de una "pestaña" y no espacios en blanco.
Esto se aplica a la línea "gcc" (línea # 4) en su caso. Necesitas insertar la pestaña antes de gcc.
También reemplace / rm -fr ll con "rm -fr ll". Insertar pestañas antes de este comando también
makefile tiene una relación muy estúpida con las pestañas, todas las acciones de cada regla están identificadas por pestañas ...... y los 4 espacios no hacen una pestaña, solo una pestaña hace una pestaña ...
para verificar si uso el comando cat -e -t -v makefile_name
muestra la presencia de pestañas con ^ I y los finales de línea con $; ambos son vitales para garantizar que las dependencias terminen correctamente y las pestañas marcan la acción de las reglas para que sean fácilmente identificables con la utilidad make ...
ejemplo:
Kaizen ~/so_test $ cat -e -t -v mk.t
all:ll$ ## here the $ is end of line ...
$
ll:ll.c $
^Igcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<$
## the ^I above means a tab was there before the action part, so this line is ok .
$
clean :$
/rm -fr ll$
## see here there is no ^I which means , tab is not present ....
## in this case you need to open the file again and edit/ensure a tab
## starts the action part
espero que esto ayude !!