ubuntu下简单helloworld模块无法rmmod,求解
本帖最后由 qwerttt 于 2015-4-12 09:37 编辑初入linux驱动
用VM10.0, ubuntu14.04.2 内核3.16.0
代码很简单
static int __init hello_init(void)
{
printk(KERN_NOTICE "hello world!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_NOTICE "hello exit!\n");
}
Makefile代码
ifneq ($(KERNELRELEASE),)
obj-m :=helloworld.o
else
KDIR:=/lib/modules/3.16.0-30-generic/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
insmod可以加载成功 命令insmodhelloworld.ko
rmmod出现如下错误:命令rmmodhelloworld
rmmod: ERROR: ../libkmod/libkmod-module.c:769 kmod_module_remove_module() could not remove 'helloworld': Device or resource busy
rmmod: ERROR: could not remove module helloworld.ko: Device or resource busy
网上有的说用rmmod -f或是 在/lib/modules/建一个与内核文件名一样的文件夹也没有成功卸载 lsmod 怎么说? lsmod有显示
Module Size Used by
helloworld 12425 0 之前在嵌入式开发板上出现过这样的问题,当时的解决方法就是在/lib/modules/建一个与内核文件名一样的文件夹,同时把这个文件夹的属性改为777,试试,这个好像和内核是有关系的。 代码里加上:
module_init(hello_init);
module_exit(hello_exit); module_init(hello_init);
module_exit(hello_exit);
这个肯定要加上的
helloworld代码没有在开发板上跑
只是在ubuntu下出现这样的问题 本帖最后由 sunliezhi 于 2015-5-4 17:42 编辑
没有看到你的 PWD 定义在哪
一般这样:
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd) 学习一下 模块被应用程序打开调用后,有没有关闭应用?
页:
[1]