我寫了一個簡單的Linux模塊&其make文件化妝:沒有規則,使目標
這是我的模塊
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk("<1> Hello world!\n");
return 0;
}
static void hello_exit(void) {
printk("<1> Bye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
這是我的make文件
obj-m :=Hello.o
KDIR = /usr/src/linux-headers-3.5.0-17
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order
當我執行make -f MakeFile 它給出以下o/p
make -C /usr/src/linux-headers-3.5.0-17 SUBDIRS=/home/linux/Desktop modules
make[1]: Entering directory `/usr/src/linux-headers-3.5.0-17'
WARNING: Symbol version dump /usr/src/linux-headers-3.5.0-17/Module.symvers
is missing; modules will have no dependencies and modversions.
scripts/Makefile.build:44: /home/linux/Desktop/Makefile: No such file or directory
make[2]: *** No rule to make target `/home/linux/Desktop/Makefile'. Stop.
make[1]: *** [_module_/home/linux/Desktop] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.5.0-17'
make: *** [all] Error 2
任何人都可以告訴我如何擺脫這些錯誤。 在此先感謝
爲什麼需要將'SUBDIR'設置爲'$ PWD'?你有文件'/ home/linux/Desktop/Makefile'嗎?根據我的經驗,不需要設置'SUBDIR'。您可以嘗試刪除'all:'中的'SUBDIR'並重新制作。 – starrify
感謝刪除subdir後的重播apper make [1]:***沒有指定目標,也沒有找到makefile。停止。 –
哦,對不起,我粗心的回覆。我想你應該做的是恢復'SUBDIR'並將'MakeFile'重命名爲'Makefile',然後重試,因爲它缺少'Makefile'文件並且'* nix'區分大小寫。 – starrify