c – Ubuntu 15.10(内核4.2):Hello world内核模块makefile错误
我已经尝试了几个小时来创建我的第一个Hello World内核模块,唉,没有成功.我的简单C代码(hello.c)和makefile位于我的系统的/ Downloads中,如果这应该是重要的.
你好? #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello,worldn"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye,cruel worldn"); } module_init(hello_init); module_exit(hello_exit); 生成文件 obj?m += hello.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”(不带引号)来构建内核模块时,这是我收到的错误消息: make -C /lib/modules/4.2.0-16-generic/build M=/home/username/workspace/test/Module modules make[1]: Entering directory '/usr/src/linux-headers-4.2.0-16-generic' scripts/Makefile.build:44: /home/username/workspace/test/Module/Makefile: No such file or directory make[2]: *** No rule to make target '/home/username/workspace/test/Module/Makefile'. Stop. Makefile:1398: recipe for target '_module_/home/username/workspace/test/Module' failed make[1]: *** [_module_/home/username/workspace/test/Module] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.2.0-16-generic' makefile:4: recipe for target 'all' failed make: *** [all] Error 2 我已经尝试了几乎所有的解决方案,并且已经遵循了关于可以在谷歌上找到的这个问题的每个建议.没有什么能解决我的问题…… >我应该将hello.c和makefile移动到/usr/src吗? 解决方法
我刚刚将名称“makefile”更改为“Makefile”(大写M),这似乎已经做了一些事情.现在我得到:
make -C /lib/modules/4.2.0-16-generic/build M = / home / username / workspace / test / Module modules ^^我从一开始就知道它以某种方式我的makefile导致了这个问题!尽管如此,我仍然没有hello.ko文件. 有什么建议我现在应该尝试一下吗? 我的天啊 !!! 谷歌搜索这个新问题,发现这个答案来自dsf:Linux: modpost does not build anything(最后发布) 就像他们建议我手动在Makefile中输入文本一样,之后就好像通过魔术一样,它工作得非常好!现在我有了hello.ko,但不幸的是,没有解释.也许,如果你只是从pdf /网站复制Makefile文本,你最终会得到不需要的字符,因为dsf似乎相信?! 无论如何,问题解决了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |