多个源文件编译生成一个内核模块
例如,将hello.c和world.c两个c文件编译生成一个叫hello_world.o的目标文件,则在Makefile
中添加以下两句:
obj-m:=hello_world.o
hello_world-objs=hello.cworld.c
内核污染
insmod
ko模块时,可能出现如下提示:
loadingout-of-tree
module
taintskernel
几个可能原因:
-
模块没有声明
GPL
协议 - 当前linux内核版本和编译模块使用的内核版本不一致
- 使用内核源代码未包含的树外模块
printk和printf
在内核中的打印函数是printk
,printk
和printf
的行为非常相似,但是通常printk不支持浮点数,例如要打印一个浮点变量,在编译时通常会出现如下警告,并且模块也不会加载成功:
WARNING:
"__extendsfdf2"
[/home/ubuntu/driver/user.ko]undefined!
WARNING:
"__truncdfsf2"
[/home/ubuntu/driver/user.ko]undefined!
WARNING:
"__divdf32"
[/home/ubuntu/driver/user.ko]undefined!
WARNING:
"__floatsidf"
[/home/ubuntu/driver/user.ko]undefined!
-
模块
+关注
关注
7文章
2666浏览量
47331 -
内核
+关注
关注
3文章
1362浏览量
40217 -
Linux
+关注
关注
87文章
11219浏览量
208872 -
源文件
+关注
关注
0文章
30浏览量
4569
发布评论请先 登录
相关推荐
评论