驱动加载module license ‘unspecified‘ taints kernel问题
驱动加载 module license 'unspecified' taints kernellicense声明MODULE_LICENSE("GPL")
·
驱动加载module license 'unspecified' taints kernel问题
单独编译驱动、加载出现的问题
驱动开始在内核中编译并加载可以通过,考虑到驱动方便修改,所以将驱动单独编译然后在系统启动后手动加载。
单独编译后用insmod加载时出现如下提示:
module license 'unspecified' taints kernel
出现这种现象有两种原因
1. 内核中没有添加license声明;
linux内核的license声明可以遵循这些协议”GPL“,”GPL2“等。
需要在内核中添加如下声明:
MODULE_LICENSE("GPL");
2. 编译方法错误;
单独一个文件a.c时编译成功并可以正确加载,但当有多个文件时如增加了b.c、c.c、d.c后可以正常编译,加载时出现错误提示:
module license 'unspecified' taints kernel
删除模块,然后重新加载不再出现错误提示,但驱动并没有工作:
rmmod a.ko
insmod a.ko
这是由于Makefile文件编写错误导致的,正确的写法如下:
obj-m += abc.o ##abc为编译目标名字,且不能与.c文件名一致
abc-objs := a.o b.o c.o d.o
KDIR = /home/linux-kernel4.4.94/
PWD = $(shell pwd)
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnu-
CC = $(CROSS_COMPILE)gcc
all:
make -C $(KDIR) M=$(PWD) modules ARCH=mips
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c *.tmp_versions *.symvers *.order
.PHONY: modules clean
修改Makefile文件后,重新编译驱动,可以成功加载驱动程序。
更多推荐
所有评论(0)