我正在尝试学习模块编程,因为我在c中使用了一个示例程序
#include<linux/module.h>
#include<linux/kernel.h>
int init_module(void)
{
printk(KERN_INFO "Hello man .\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Good bye see you soon\n");
}
为了编译这个c代码我写了一个make文件,如下所示
obj-m + = Hello_module.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD)modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
然后我使用make命令编译这个,我得到以下错误
joe@joe-O-E-M:~/Module_pgm$ make
make -C /lib/modules/3.19.0-25-generic/build M=/home/joe/Module_pgmmodules
make[1]: Entering directory `/usr/src/linux-headers-3.19.0-25-generic'
./scripts/Makefile.build:44: /home/joe/Module_pgmmodules/Makefile: No such file or directory
make[2]: *** No rule to make target `/home/joe/Module_pgmmodules/Makefile'. Stop.
make[1]: *** [_module_/home/joe/Module_pgmmodules] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.19.0-25-generic'
make: *** [all] Error 2
我该如何解决这个问题..
答案 0 :(得分:2)
您错过了$(PWD)
和modules
之间的空格。尝试:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
“无此类文件或目录”错误消息显示其尝试查找的路径。