gpt4 book ai didi

linux-kernel - 创建简单的内核模块

转载 作者:行者123 更新时间:2023-12-04 04:58:45 25 4
gpt4 key购买 nike

我刚刚开始学习 linux 内核模块并尝试编写简单的 Hello world 程序。

所以 mymod.c:

#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Author");
MODULE_DESCRIPTION("\"Hello, world!\" minimal module");
MODULE_VERSION("printk");

int init_module(void)
{
printk("<1>Hello world 1.\n");
return 0;
}

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

生成文件:

obj-m += mymod.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 -C /lib/modules/3.2.0-23-generic-pae/build M=/root modules
make[1]: Entering directory `/usr/src/linux-3.2.42'

WARNING: Symbol version dump /usr/src/linux-3.2.42/Module.symvers
is missing; modules will have no dependencies and modversions.

Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-3.2.42'

所以它创建了我需要的文件,但是当我尝试通过以下方式安装它时

insmod mymod.ko

我得到下一个输出:

insmod: error inserting 'mymod.ko': -1 Invalid module format

所以我想知道问题出在哪里?

附言。操作系统——Ubuntu 服务器 12.04。内核 - linux 3.2.0-23 pae

更新:

我已经从 kernel.org 下载内核 3.2.42 并将其放入/usr/src 并执行“make defconfig && make prepare”、“make modules_prepare”。我还在/lib/modules/3.2.0-23-generic-pae/build 中创建了链接。

最佳答案

这是运行内核的源代码树吗?如果不是,它应该失败。

为您的发行版安装 kernel-devel(或类似名称的)包,它添加了足够的机制来针对它构建模块。

关于linux-kernel - 创建简单的内核模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15729717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com