2012-05-14 12 views
5

Soy nuevo en el controlador de Linux.make yields "los comandos comienzan antes del primer objetivo" error

Estoy escribiendo helloworld driver.

Aquí está el código:

#define MODULE 
#define __KERNEL__ 
#include <module.h> 
int init_module() 
{ 
return 0; 
} 

void cleanup_module() 
{ 
return; 
} 

y aquí es MAKE:

CC=gcc 
    MODFLAGS:= -O3 -Wall -DLINUX 
    module.o: module.c 
    $(CC) $(MODFLAGS) -c module.c 

Pero cuando corro hacer comandos que tienen la siguiente: makefile: 3: * “comandos commence antes del primer objetivo "error

¿Cuál es el problema?

+1

¿Están esos espacios en el margen izquierdo en el archivo MAKE? ¿O pestañas? – Beta

+0

Hay pestañas en makefile – user1284151

Respuesta

9

Retire las pestañas principales en el makefile, de cada línea que no es un comando :

CC=gcc 
MODFLAGS:= -O3 -Wall -DLINUX 
module.o: module.c 
    $(CC) $(MODFLAGS) -c module.c 
1

Aunque este no fue el caso para usted, me encontré con el mismo mensaje de error con una diferente razón. Así que estoy respondiendo aquí también para que pueda ayudar a las personas en el futuro cuando encuentren el mensaje de error, pero la razón no es tan obvia como en su caso.

Aquí está un ejemplo de un mínimo de provocar la condición de error por el mero hecho de tener un archivo con un signo igual en su nombre coincide con el $(wildcard) (obviamente aquí con fines de demostración estoy a juego sólo nombres de archivo con un =). Estrictamente hablando, no importa qué método use para recuperar los nombres de la variable $(FILES).

FILES := $(wildcard ./*=*) 

.PHONY: all 

define foo 
all: something-$(1) 
something-$(1): $(1) 
    cat $$^ > [email protected] 
endef 

$(foreach goal,$(sort $(FILES)),$(eval $(call foo,$(goal)))) 

El problema parece ser la forma en que ocurre la expansión, en este caso y solo ocurrirá debido a la macro.

De todos modos, me quedé perplejo cuando terminé con este mensaje de error mientras que el archivo make en sí, también según el control de versión, no había cambiado. Hasta que caí en la cuenta de que debe haber alguna razón circunstancial para el problema entonces. Puede ayudar a la persona futura en busca de una respuesta.

Cuestiones relacionadas