Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 无法将模块插入内核_Ubuntu_Linux Kernel_Kernel Module_Insmod - Fatal编程技术网

Ubuntu 无法将模块插入内核

Ubuntu 无法将模块插入内核,ubuntu,linux-kernel,kernel-module,insmod,Ubuntu,Linux Kernel,Kernel Module,Insmod,这是我对内核模块的介绍。我正在跟进,刚刚编写了我的第一个简单模块 这是我的模块文件hello.c /* * hello.c − The simplest kernel module. */ #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ int init_module(void)

这是我对内核模块的介绍。我正在跟进,刚刚编写了我的第一个简单模块

这是我的模块文件
hello.c

/*
*  hello.c − The simplest kernel module. 
*/
#include <linux/module.h>       /* Needed by all modules */
#include <linux/kernel.h>       /* Needed for KERN_INFO */

int init_module(void)
{        
printk(KERN_INFO "Hello world 1.\n");        

/*          
* A non 0 return means init_module failed; module can't be loaded.          
*/        
return 0;
}

void cleanup_module(void){
    printk(KERN_INFO "Goodbye world 1.\n");
}

module_init(init_module);
module_exit(cleanup_module);
当我运行
make
命令时,我得到的是

make-C/lib/modules/4.15.0-45-generic/build M=/home/nailaakbar模块

make:正在输入目录“/usr/src/linux-headers-4.15.0-45-generic”

构建模块,第2阶段

modpost0模块

make:离开目录“/usr/src/linux-headers-4.15.0-45-generic”

但是现在,当我尝试使用这个命令将它插入内核时

sudo insmod hello.k
我犯了这个错误

insmod:错误:无法加载模块hello.ko:没有这样的文件或目录

我尝试过不同的解决方案,比如使两个函数都是静态的,或者更改文件位置,但都没有效果

目前,我正在桌面上运行所有这些命令,并使用双线程 引导linux环境

谁能帮我弄清楚我做错了什么


可能的重复问题实际上解决了我的问题,但不是直接解决了我的问题。在我的问题搜索过程中,我问了那个问题,但没有得到答案。实际上,这是对我的问题的一条评论,改变了我对错误的看法,然后提到的答案解决了我的问题。

正如您从构建日志中看到的,没有构建任何模块(
MODPOST 0模块
)。因此,试图加载模块只是一种浪费。顺便说一句,构建日志应该是文本形式的,它允许搜索它的单词和短语,而不是以图像的形式。请用您的问题解决这个问题。以文本形式更新日志..Hm,您的主目录下是否有
hello.c
Makefile
?这不是一个错误,只是为了确保:通常,主目录中有子目录。您的Makefile中有非标准的破折号(
-
)。因此,您不需要分配对Linux内核构建系统有特殊意义的
obj-m
。这正好说明了这个问题。你的问题似乎是答案对应的问题的重复。重复意味着你有相同的问题,可能用不同的描述来表达。重复并不意味着你的问题将立即被删除。这仅仅意味着问题已经得到了回答(在其他地方),所以我们不需要重复答案。如果其他人发现“无法加载模块”错误,但没有注意到
MODPOST 0模块
行,则他/她将找到您的问题。然后,使用重复链接,他将找到原始的问题描述和答案。从构建日志中可以看到,没有构建模块(
MODPOST 0模块
)。因此,试图加载模块只是一种浪费。顺便说一句,构建日志应该是文本形式的,它允许搜索它的单词和短语,而不是以图像的形式。请用您的问题解决这个问题。以文本形式更新日志..Hm,您的主目录下是否有
hello.c
Makefile
?这不是一个错误,只是为了确保:通常,主目录中有子目录。您的Makefile中有非标准的破折号(
-
)。因此,您不需要分配对Linux内核构建系统有特殊意义的
obj-m
。这正好说明了这个问题。你的问题似乎是答案对应的问题的重复。重复意味着你有相同的问题,可能用不同的描述来表达。重复并不意味着你的问题将立即被删除。这仅仅意味着问题已经得到了回答(在其他地方),所以我们不需要重复答案。如果其他人发现“无法加载模块”错误,但没有注意到
MODPOST 0模块
行,则他/她将找到您的问题。然后,使用重复链接,他将在上面找到原始问题描述和答案。
sudo insmod hello.k