全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

内核模块知识:多个源文件编译生成一个内核模

时间:2023-09-26 16:58

人气:

作者:admin

标签: 源文件  模块  内核 

导读:多个源文件编译生成一个内核模块 例如,将hello.c和world.c两个c文件编译生成一个叫hello_world.o的目标文件,则在 Makefile 中添加以下两句: obj-m := hello_world.o hello_world-objs = hello.c world...

多个源文件编译生成一个内核模块

例如,将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

在内核中的打印函数是printkprintkprintf的行为非常相似,但是通常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!

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信