2012-09-23 48 views
0

我正在學習Linux模塊編程。我在Ubuntu 12.04上工作。我製作了一個模塊,即start.c,並將其保存在home/documents/module_prog中。makefile不起作用

然後我做了如下的makefile(我不與生成文件熟悉,所以我只是做了該教程告訴我):

obj-m += start.o 

KDIR = /usr/src/linux-headers-3.2.0-31-generic-pae 

all: 
    make -C $(KDIR) SUBDIRS=$(PWD) modules 

clean: 
    rm -rf *.o *.ko *.mod.* *.symvers *.order 

但是,現在當我輸入使在終端上,一條消息顯示哪些說

make: Nothing to be done for `all'. 

請告訴我什麼是錯?

+2

你的工作目錄中有一個名爲'all'的文件嗎? –

+0

既然你在Linux上,如果你使用'make -B'會發生什麼?這假設一切都過時了,並且應該執行命令,即使你有一個名爲'all'的文件或目錄。 –

回答

3

確保make目標的命令是用於製表符而不是空格。即

all: 
<tab>make -C $(KDIR) SUBDIRS=$(PWD) modules 

否則all目標將是空的,因此不會做任何事情。

+1

缺少選項卡將是無效的makefile語法,應該生成一個「缺少分隔符」的錯誤,而不是OP所看到的。 –

+0

如果我將上面的Makefile複製到我的Ubuntu 12.04安裝中,它會抱怨第9行(clean)缺少分隔符。如果我解決了這個問題,但是留下了第6行的空格,那麼就沒有錯誤,但是確切地說是消息提到的消息。 – dseifert

+0

聽起來像你在正確的軌道上。我很驚訝,它可以讓你擺脫這一點。 –