2012-05-14 11 views
5

Sono nuovo a dev del driver linux.rendere i "comandi iniziano prima del primo target" errore

Sto scrivendo driver helloworld.

ecco il codice:

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

void cleanup_module() 
{ 
return; 
} 

e qui è makefile:

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

Ma quando corro fare comando ho la seguente: makefile: 3: * “comandi commence "prima del primo target" errore

cosa è sbagliato?

+1

Sono quegli spazi sul margine sinistro nel makefile? O schede? – Beta

+0

Esistono schede in makefile – user1284151

risposta

9

Rimuovere le schede leader nel makefile, da ogni linea che non è un comando :

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

Anche se questo non era il caso per voi, ho incontrato lo stesso messaggio di errore con una diversa ragionare. Quindi sto rispondendo anche qui in modo che possa aiutare le persone in futuro quando incontrano il messaggio di errore, ma la ragione non è così ovvia come nel tuo caso.

Ecco un esempio minimo per provocare la condizione di errore, semplicemente avendo un file con un segno di uguale nel suo nome corrisponde al $(wildcard) (ovviamente qui a scopo dimostrativo sto matching solo nomi di file con un =). A rigor di termini, non importa quale metodo si utilizza per recuperare i nomi per la variabile $(FILES).

Il problema sembra essere nel modo in cui l'espansione si verifica - in questo caso e accadrà solo a causa della macro.

In ogni caso, sono rimasto perplesso quando ho finito con questo messaggio di errore mentre il file make stesso - anche in base al controllo della versione - non era cambiato. Fino a quando non mi è venuto in mente che ci deve essere una ragione circostanziata per il problema allora. Possa aiutare la futura persona in cerca di una risposta.

Problemi correlati