我目前正在尝试运行一个内核模块。这个模块似乎可以在各种Linux机器上很好地工作,但是,当我尝试在特定的机器上运行它(即,内核版本为2.6的CentOS )时,该模块无法启动,并声称我没有设置模块许可证,因此不允许我使用各种必要的内核API。
我已经在我的主源文件(包含module_init和module_exit的那个文件)的底部设置了MODULE_LICENSE("GPL"),就我所能找到的所有示例而言,这已经足够了。我应该注意到我的项目有多个文件。
我有点难住了,所以任何帮助都将不胜感激。
发布于 2013-06-03 18:51:22
好了,我知道我做错了什么。我尝试为我的模块编译启用-Werror标志。为此,我在makefile中添加了以下行:
CFLAGS_MODULE=-错误
我认为这搞乱了内核模块许可的某些方面。删除这一行可以使模块再次工作。如果你遇到了这类问题,请确保你没有在makefile中摆弄环境变量。
发布于 2013-06-03 17:09:47
首先,验证许可信息是否存在于模块对象文件中。
objdump -sj.modinfo yourModule.ko
发布于 2016-12-04 19:19:42
我刚刚遇到了同样的问题,只有在我在模块的makefile引用的每个c文件的开头(在includes之后)编写了MODULE_LICENSE("GPL")之后,这个问题才得到解决。
https://stackoverflow.com/questions/16809378
复制相似问题