
你好ç
#include <linux/init.h>#include <linux/module.h>MODulE_liCENSE("Dual BSD/GPL");static int hello_init(voID) { printk(KERN_ALERT "Hello,world\n"); return 0;}static voID hello_exit(voID) { printk(KERN_ALERT "Goodbye,cruel world\n");}module_init(hello_init);module_exit(hello_exit); 生成文件
obj−m += hello.oall: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
当我尝试通过在终端中输入“make”(不带引号)来构建内核模块时,这是我收到的错误消息:
make -C /lib/modules/4.2.0-16-generic/buildM=/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 ordirectory 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中说hello.c而不是hello.o吗?
>我的Ubuntu可能会丢失一些东西吗?
> ……
make -C /lib/modules/4.2.0-16-generic/build M = / home / username / workspace / test / Module modules
make [1]:输入目录’/usr/src/linux-headers-4.2.0-16-generic’
构建模块,第2阶段.
MODPOST 0模块
make [1]:离开目录’/usr/src/linux-headers-4.2.0-16-generic’
^^我从一开始就知道它以某种方式我的makefile导致了这个问题!尽管如此,我仍然没有hello.ko文件.
有什么建议我现在应该尝试一下吗?
我的天啊 !!!
谷歌搜索这个新问题,发现这个答案来自dsf:Linux: modpost does not build anything(最后发布)
就像他们建议我手动在Makefile中输入文本一样,之后就好像通过魔术一样,它工作得非常好!现在我有了hello.ko,但不幸的是,没有解释.也许,如果你只是从pdf /网站复制Makefile文本,你最终会得到不需要的字符,因为dsf似乎相信?!
无论如何,问题解决了.
总结以上是内存溢出为你收集整理的c – Ubuntu 15.10(内核4.2):Hello world内核模块makefile错误全部内容,希望文章能够帮你解决c – Ubuntu 15.10(内核4.2):Hello world内核模块makefile错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)