2010-07-23 18 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 

त्रुटि है:makefile: लापता विभाजक

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

उत्तर

20

ifneq और ( के बीच एक स्थान नहीं होना चाहिए।

टैब उपसर्ग मतलब है कि यह एक शेल कमांड है, इसलिए यह सुनिश्चित करें कि खोल आदेश (make और rm) टैब के साथ शुरू हो, और इस तरह ifneq के रूप में अन्य सभी लाइनों टैब के साथ शुरू नहीं है।

+0

+1 खोल आदेश के लिए टैब के साथ शुरुआत –

0

चेक obj-m: और KDIR: से पहले:

makefile:2:*** missing separator . stop

लेकिन ifneq($(KERNELRELEASE),) के लिए, अगर मैं पहले एक टैब जोड़ने के लिए, मैं एक त्रुटि मिलती है आदि। क्या आपके टैब रिक्त स्थान के रूप में डाले जा रहे हैं?

+0

हाँ। मुझे यकीन है कि यह एक टैब नहीं है। – Grey

0

आप अपने सशर्त ifneq ($ (KERNELRELEASE) के दूसरे भाग को याद कर रहे हैं,) को "2.6.17" (उदाहरण के लिए) जैसे अल्पविराम के बाद कुछ होना चाहिए।

+1

मुझे नहीं लगता है कि मुद्दा है .. मैं किताब से नकल है कि रेखा .. – Grey

1

मेक शिकायत कर रहा है कि दूसरी पंक्ति टैब के साथ शुरू नहीं करता है। आपका आईडीई/टेक्स्टडिटर रिक्त स्थान का उपयोग करके टैब वर्ण के बराबर फ़ाइल को सहेज सकता है। या तो टैब वर्ण का उपयोग करने के लिए आईडीई को कॉन्फ़िगर करें, या एक साधारण संपादक जैसे विम या नैनो का उपयोग करें और टैब के साथ दूसरी पंक्ति पर अग्रणी सफेद स्थान को प्रतिस्थापित करें।

संबंधित मुद्दे