新手入门
- 积分
- 9
- 金钱
- 9
- 注册时间
- 2023-10-12
- 在线时间
- 4 小时
|
楼主 |
发表于 2023-10-14 00:57:19
|
显示全部楼层
图片不见了,重新补上。
跟着教程写了一个FIFO模块,模块命名为cstfifo.ko,
通过insmod安装cstfifo.ko后,
在通过rmmod卸载模块,系统提示出错,通过多次尝试,更换模块之类的全都存在这个问题。(模块能正常使用,除了卸载)
通过使用lsmod进行查看,发现cstfifo这个模块是已经成功安装了的,只是不知道为什么Size 和 Used by为什么是-2。
借助网络进行查询(linux - lsmod shows -2 in the “Used by” column - Unix & Linux Stack Exchange),
说Used by之所以为-2是因为在linux内核进行编译的时候没有将CONFIG_MODULE_UNLOAD勾选上。
随后回去查看linux编译时的选项,发现这个宏是勾选上的,所以不是我要找的答案。
继续求助网络(Linux内核模块文件名中的坑_内核编译各种坑_云帆清扬的博客-CSDN博客),
找到一个跟我一模一样问题的人,也是Size和Used by都是-2。
但是他的问题是由于命名问题导致的,很明显我的没有该问题,但是给了我启发。
我去查看/sys/module目录,发现模块名果真存在问题。
不知道为什么我的模块名会有一个.o的后缀。
估计就是这个后缀导致了无法通过rmmod命令来卸载cstfifo这个模块。
随后我尝试rmmod cstfifo.o来卸载模块
发现还是报错。后来想通过使用改名的方法将cstfifo.o改为cstfifo但是提示没有权限,即使加上sudo命令也不行。
对比Makefile也是跟教程一致的,真想不明白问题出在哪儿,能用的办法都试过了。
跪求大佬解答这个问题该怎么解决,为什么会出现这种问题?
使用的内核是:
11、开发板教程对应的uboot和linux源码/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2
编译器是:
5、开发工具/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz |
|