2012-05-14 34 views
5

linux driver dev."komutları ilk hedeften önce başlat" hatası verir

Helloworld sürücüsünü yazıyorum. Burada

kodudur:

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

void cleanup_module() 
{ 
return; 
} 

ve burada Makefile geçerli:

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

Ama yapmak çalıştırdığınızda komut aşağıdaki vardır: makefile: 3: * “hali başlamaktadır komutları ilk hedeften önce ”hata

Sorun nedir?

+1

Bu boşluklar makefile içindeki sol kenarda mı? Veya sekmeler? – Beta

+0

Makefile'de sekmeler var – user1284151

cevap

9

bir komut değil her satırından, makefile lider sekmeleri çıkarın: bu sizin için durum böyle olmasına rağmen

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

, farklı bir ile aynı hata iletisini karşılaştı sebep. Bu yüzden, ben de hata mesajı ile karşılaştıklarında ileride insanlara yardımcı olabilir, ancak sizin durumunuzda olduğu kadar açık değildir.

Burada sadece (Tanıtım amaçlı bir = ile sadece dosya isimlerinde am için açıkçası burada) $(wildcard) maç adında bir eşittir işareti ile bir dosyayı alarak hata durumunu kışkırtmak için minimal bir örnek. Kesin olarak, $(FILES) değişkeninin isimlerini almak için hangi yöntemi kullandığınız önemli değildir.

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

.PHONY: all 

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

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

Sorun, genişlemenin gerçekleştiği yerde görünüyor - bu durumda yalnızca makrodan kaynaklanıyor olabilir.

Her neyse, make dosyasının kendisi de - sürüm denetimine göre - değişmemişken bu hata mesajıyla bittiğimde şaşırdım. O zamana kadar, o zaman sorun için bir miktar mantıksal sebep olmalı. Bir cevap aramak için gelecekteki kişiye yardımcı olabilir.

İlgili konular