2010-07-23 24 views
8
#kernel build system and can use its lanauge 
ifneq($(KERNELRELEASE),) 
obj-m:=helloworld.o 
else 
KDIR:= /lib/modules/2.6.33.3-85.fc13.i686/build 
all: 
make -C $(KDIR) M=$(PWD) modules 
clean: 
rm -f *.ko *.o *.mod.o *.mod.c *.symvers 
endif 

El error es:makefile: separador de falta

makefile:2:*** missing separator . stop

pero para el ifneq($(KERNELRELEASE),), si agrego una ficha antes, me sale otro error:

makefile:2: ***commands commence before first target. stop

Respuesta

20

Debe haber un espacio entre ifneq y (.

El prefijo TAB significa que se trata de un comando shell, así que asegúrese de que los comandos de la shell (make y rm) comienzan con TAB, y todas las demás líneas como ifneq no comienzan con TAB.

+0

+1 para comandos de shell comenzando con pestaña –

0

Control antes de obj-m: y KDIR: ¿Tus pestañas se insertan como espacios?

+0

sí. estoy seguro de que es una pestaña, no espacios. – Grey

0

Falta la segunda parte de su ifneq condicional ($ (KERNELRELEASE),) necesita tener algo después de la coma, como "2.6.17" (por ejemplo).

+1

no creo que ese sea el problema ... copio esa línea del libro ... – Grey

1

Make se queja de que la segunda línea no comienza con una pestaña. Su IDE/texteditor puede estar guardando el archivo usando espacios como equivalentes a un carácter de tabulación. Configure el IDE para usar el carácter de tabulación, o use un editor simple como vim o nano y reemplace el espacio en blanco inicial en la segunda línea con una pestaña.