2012-05-14 34 views
5

我是新的Linux驅動程序開發。使產量「命令開始之前第一個目標」錯誤

我正在寫helloworld驅動程序。

這裏是代碼:

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

void cleanup_module() 
{ 
return; 
} 

這裏是生成文件:

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

但是當我運行make命令我有以下幾點: 生成文件:3:*「命令動工之前第一個目標「錯誤

最新錯了?

+1

那些空格在makefile的左邊空白處?或標籤? – Beta

+0

makefile中有標籤 – user1284151

回答

9

在Makefile中刪除開頭的標籤,從每一行不是一個命令

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

雖然這種情況並非如此對你,我遇到了同樣的錯誤信息與不同原因。所以我也在這裏回答,以便在他們遇到錯誤信息時可以幫助人們,但原因並不像你的情況那麼明顯。

這裏有一個小例子,僅通過具有文件名稱中帶有等號匹配$(wildcard)(顯然這裏演示的目的,我匹配只有文件名與=)挑起的錯誤條件。嚴格地說,使用什麼方法來檢索$(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)))) 

問題似乎是擴張發生的方式 - 在這種情況下,它只會發生,由於宏。

無論如何,當我結束了這個錯誤消息,而make文件本身 - 也根據版本控制 - 沒有改變時,我很難過。直到我明白,這個問題一定存在一些間接原因。願它幫助未來的人尋找答案。

相關問題